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
Zugriff verweigert, wenn eine Anfrage an den Amazon GameLift Streams-Service gestellt wurde
Wenn Sie bei Aufrufen von Amazon GameLift Streams APIs oder bei der Arbeit mit Ressourcen in der Konsole auf AccessDenied Ausnahmen stoßen, verfügt Ihre AWS Identity and Access Management (IAM-) Rolle möglicherweise nicht über ausreichende Berechtigungen für Amazon GameLift Streams. Ü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 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 finden Sie Identity and Access Management für Amazon GameLift Streams im Kapitel Sicherheit und im IAM-Benutzerhandbuch unter Behebung von Fehlermeldungen mit Zugriffsverweigerung.
Probleme mit der Anwendung
In diesem Abschnitt werden mögliche Ursachen für Probleme identifiziert, die verhindern, dass Anwendungen ausgeführt werden oder dass sie in Amazon GameLift Streams unterschiedlich angezeigt werden.
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.
Probleme mit 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 Kompatibilität mit Proton für Amazon GameLift Streams testen und beheben.
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 Anwendung wird beim Start der Stream-Sitzung beendet
Wenn Ihre Anwendung sofort beendet wird, wenn eine Stream-Sitzung gestartet wird, überprüfen Sie die folgenden Punkte auf mögliche Ursachen und Lösungen:
-
Überprüfen Sie die Laufzeit. Vergewissern Sie sich in der Amazon GameLift Streams-Anwendungskonfiguration, dass die Datei, die Sie im Startpfad der ausführbaren Datei angegeben haben, eine ausführbare Datei oder ein Skript ist und für die von Ihnen ausgewählte Laufzeitumgebung geeignet ist. Windows-Anwendungen sollten den Dateityp „.exe“, „.bat“ oder „.cmd“ haben und entweder auf die Windows- oder Proton-Laufzeiten abzielen. Native Linux-Anwendungen sollten ausführbare Dateien sein, die auf die Ubuntu 22.04 LTS-Laufzeit abzielen.
-
Überprüfung erforderlich. DLLs Ihre Windows-Anwendung fehlt möglicherweise (erforderlich) DLLs. Wenn es sich bei Ihrer Anwendung beispielsweise um einen Debug-Build handelt, benötigt sie die Debug-Version der Microsoft C- und C++-Laufzeitbibliotheken (MSVC). 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 für die Ausführung einer ausführbaren Debug-Datei
von Microsoft.
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.
Die Unreal Engine-Anwendung stürzt ab oder erfordert zusätzliche Abhängigkeiten
Wenn Ihre Unreal Engine-Anwendung nicht gestartet werden kann, abstürzt oder Sie zusätzliche Abhängigkeiten wie die Microsoft C- und C++-Laufzeit (MSVC) 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/(oder einem ähnlichen) Unterordner befindet. Unreal Engine erzeugt zwei ausführbare Dateien: eine kleine Bootstrap-Datei im Stammverzeichnis des Ordners und eine ausführbare Plattform-Zieldatei im Unterordner.Binaries/Win64/Die Bootstrap-Programmdatei im Stammverzeichnis versucht zu überprüfen, ob die Vorbedingungen korrekt sind, und kann in Amazon GameLift Streams zu Fehlalarmen führen, die den Anwendungsstart verhindern. Wenn die ausführbare Datei für das Plattformziel fehlt, wurde die Anwendung möglicherweise nicht korrekt erstellt. Sehen Sie sich zum Beispiel die folgende Ordnerstruktur einer Unreal-Beispielanwendung an:BuildApp |-> MyUnrealApp.exe |-> MyUnrealApp |-> Binaries |-> Win64 |-> MyUnrealApp.exe -
Schalten Sie Unreal Engine Asserts aus. Deaktivieren Sie die
checkMakrosverify, undensure. Sie können verhindern, dass die Anwendung Crash-Dumps erstellt. Weitere Informationen finden Sie in der Dokumentation zu Asserts in Unreal Engine. -
Definieren Sie
USE_CHECKS_IN_SHIPPING=0in Ihrem Build das DeaktivierencheckundverifyMakros. -
Verwenden Sie das
-handleensurepercent=0Befehlszeilenargument, um Makros zu deaktivieren.ensure
-
Leistungsprobleme
In diesem Abschnitt werden mögliche Ursachen für Leistungsprobleme bei der Ausführung von Spielen auf Amazon GameLift Streams identifiziert und Vorschläge zur Optimierung Ihrer Streams im Service 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 leistungsfähigere 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:
gen4n: vergleichbar mit der NVIDIA RTX 2060 GPU
gen5n: vergleichbar mit der NVIDIA RTX 3080 GPU
gen6n: vergleichbar mit der NVIDIA RTX 4060 GPU
Dadurch wird überprüft, ob die Rendering-Einstellungen Ihrer Anwendung mit der GPU kompatibel sind und ob die Leistung Ihren Erwartungen entspricht.
-
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 Stream-Konnektivität 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 Ansätze, um 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
.batDatei, die die Shader-Dateien zur Laufzeit in den NVIDIA-Caching-Ordner kopiert. Dieser Ordner befindet sich normalerweise unter:.C:\Users\Administrator\AppData\Local\NVIDIA\DXCacheLaden Sie die.batDatei in den Amazon S3 S3-Anwendungs-Bucket hoch. -
Erstellen Sie eine neue Amazon GameLift Streams-Anwendung mit der
.batDatei 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%\Shadersset 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 treiberbasierten Caching-Fix für eine Proton-Runtime-Anwendung zu implementieren
-
Starten Sie das Streaming Ihrer Standardanwendung mit der folgenden Umgebungsvariablenüberschreibung:
"__GL_SHADER_DISK_CACHE_PATH" : "/home/unpriv/games" -
Spielen Sie die Anwendung ausgiebig ab, um Shader 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 die Shader-Ordner und -Dateien innerhalb des Stream-Session-Exports:
-
Ordner
application\GLCache -
wenn die Anwendung DX11:
application\Datei verwendetpath-to-exe\exe-name.dxvk-cache -
wenn die Anwendung verwendet DX12:
application\Dateipath-to-exe\vkd3d-proton.cache.write
-
-
Laden Sie die generierten Shader-Dateien in den Amazon S3 S3-Bucket Ihrer Anwendung hoch:
-
Kopieren Sie den
GLCacheOrdner in das Stammverzeichnis Ihrer Anwendung. -
Falls verfügbar, kopieren Sie die Datei
.dxvk-cacheoder dievkd3d-proton.cache.writeCache-Datei in den Ordner, der die ausführbare Datei der Anwendung enthält.
-
-
Erstellen Sie eine neue Amazon GameLift Streams-Anwendung mit derselben Proton-Konfiguration.
-
Führen Sie die Anwendung mit derselben Umgebungsvariablenüberschreibung aus:
"__GL_SHADER_DISK_CACHE_PATH" : "/home/unpriv/games"
Wenn Ihre Anwendung mit dem Streaming beginnt, verwendet sie die vorgenerierten Shader, 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.
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
-logPSOBefehl 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/CollectedPSOsEntpacken 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 Stream-Konnektivität und der Netzwerkleistung
Wenn Sie Ihren Amazon GameLift Streams-Backend-Service einrichten, überprüfen Sie Folgendes:
-
Wählen Sie eine Lösung, AWS-Region die dem Endbenutzer am nächsten kommt. Eine hohe Latenz zwischen Ihren Kunden und der Region, in der Ihr Stream gehostet wird, kann sich auf die Stream-Qualität auswirken. Eine Liste der Standorte, AWS-Regionen und entfernte Standorte, die von Amazon GameLift Streams unterstützt werden von denen aus Sie streamen können, finden Sie unter. Sie können AWS Konsolenendpunkte in der Region anpingen, um eine ungefähre Latenzmessung zu erhalten.
-
Stellen Sie sicher, dass Ihre Stream-Gruppe Kapazität für neue Streams hat.
-
Vergewissern Sie
ConnectionTimeoutSecondssich, dass diese Einstellung so gewählt ist, dass Endbenutzer genügend Zeit haben, eine Verbindung herzustellen, bevor ihr Webclient das Timeout erreicht.
Empfehlen Sie Ihren Endbenutzern, Folgendes zu überprüfen:
-
Stellen Sie sicher, dass Firewalls den Zugriff auf den UDP-Portbereich 33435-33465 zulassen, um Streaming von Amazon Streams zu ermöglichen. 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 beeinträchtigen.
-
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 Stream-Eingabe
In diesem Abschnitt werden mögliche Ursachen und Lösungen für Probleme im Zusammenhang mit Benutzereingaben in einer Stream-Sitzung beschrieben.
Allgemeine Problembehebung bei Eingaben
-
Testen Sie, ob das Problem browserspezifisch ist. Insgesamt empfehlen wir Google Chrome, Microsoft Edge oder eine benutzerdefinierte Chromium-basierte Desktop-Anwendung für das beste Endbenutzererlebnis und maximale Kompatibilität, insbesondere mit Gamecontrollern.
-
Protokollieren Sie Eingabeereignisse, die vom Client gesendet und von der Anwendung empfangen wurden, um festzustellen, wo ein Eingabefehler in Ihrem Frontend-Code vorliegt.
-
Suchen Sie unbedingt Unterstützte Browser und Eingaben nach zusätzlichen Informationen zu unterstützten Browsern und Eingabegeräten, einschließlich bekannter Probleme und Einschränkungen.
Gamepad- und Mikrofoneingänge funktionieren in nativen Linux-Anwendungen nicht
Gamepad- und Mikrofoneingänge werden in nativen Linux-Anwendungen nicht unterstützt. Unterstützte Browser und EingabenWeitere Informationen zu unterstützten Eingabegeräten, einschließlich bekannter Probleme und Einschränkungen, finden Sie unter.
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 derInputConfigurationBenutzeroberflä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 bei Ziehbewegungen 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.
Probleme mit der Stream-Sitzung
In diesem Abschnitt werden mögliche Ursachen und Lösungen für Probleme im Zusammenhang mit dem unerwarteten Starten oder Beenden einer Stream-Sitzung beschrieben.
Die Stream-Sitzung wird nicht gestartet
Mögliche Ursachen:
-
Die Anwendung hängt oder ist abgestürzt. Anweisungen zur Fehlerbehebung finden Sie Probleme mit der Anwendung im Abschnitt.
-
Der Status der Stream-Gruppe ist nicht
Active. Überprüfen Sie den Status der Stream-Gruppe. -
Das Hochfahren der On-Demand-Kapazität dauert länger als das
ConnectionTimeoutSecondsin der StartStreamSessionAPI angegebene Timeout. In der Windows-Runtime kann die On-Demand-Hochlaufzeit 5 Minuten oder länger dauern. -
Am Streaming-Standort ist keine Kapazität verfügbar. Stellen Sie sicher, dass Ihre zugewiesene Kapazität größer ist als Ihre genutzte Kapazität oder ob Sie über On-Demand-Kapazität verfügen, die nicht genutzt wird (die zugewiesene Kapazität ist geringer als die ständig verfügbare Kapazität plus On-Demand-Kapazität). In der Konsole finden Sie diese Werte in der Liste der Stream-Gruppen oder auf der Detailseite der Stream-Gruppe. Mithilfe der Service-API finden Sie diese Werte unter GetStreamGroup. Zu den Szenarien, in denen die verfügbare Kapazität vorübergehend bei Null liegt, gehören die folgenden:
-
Wenn Sie gerade die Always-On-Kapazität am Streaming-Standort erhöht haben, warten Sie einige Minuten, bis die Kapazität zugewiesen ist.
-
Wenn am Streaming-Standort nur eine Kapazität verfügbar ist und Ihr Client die Verbindung unerwartet unterbrochen hat, befindet sich die vorherige Sitzung möglicherweise immer noch im Status „Nicht verbunden“. Warten Sie einige Minuten, bis das Timeout für die Sitzung abgelaufen ist, und versuchen Sie es erneut.
-
Wenn Sie Ihrer Stream-Gruppe kürzlich einen Standort hinzugefügt haben und die Anwendung an diesem Standort nicht vorhanden war, hat die Anwendung die Replikation dort möglicherweise noch nicht abgeschlossen. Überprüfen Sie den Replikationsstatus auf der Seite mit den Stream-Gruppendetails in der Konsole. Alternativ können Sie die GetApplicationAPI verwenden und den
ReplicationStatusesWert überprüfen, um zu überprüfen, ob es sich um den gewünschten Streaming-Standort handeltCOMPLETED.Status
-
-
Die Netzwerkbedingungen sind so schlecht, dass Frames, insbesondere der erste Frame, nicht gesendet werden. Überprüfen Sie die Netzwerkbedingungen zwischen dem Client und dem Streaming-Standort und passen Sie einen anderen Standort an oder versuchen Sie es mit einem anderen.
Die Stream-Sitzung wurde beendet
Stream-Sitzungen werden automatisch beendet, wenn eine Anwendung abstürzt oder beendet wird oder wenn die Client-Verbindung unterbrochen wird. Sitzungen können auch aufgrund der folgenden Timeout-Werte beendet werden:
-
Platzierungs-Timeout: Timeout-Wert für Amazon GameLift Streams, um Rechenressourcen für das Hosten einer Stream-Sitzung zu finden.
-
Verbindungs-Timeout: Timeout-Wert für einen Client, um sich mit einer Stream-Sitzung zu verbinden oder erneut zu verbinden.
-
Timeout im Leerlauf: Maximale Zeit, während der eine Stream-Sitzung ohne Benutzereingabe inaktiv sein kann.
-
Timeout für die Sitzungslänge: Maximale Zeit für eine Stream-Sitzung.
Eine ausführliche Erläuterung der einzelnen Timeouts und ihrer möglichen Werte finden Sie unter. Timeout-Werte, die sich auf Stream-Sitzungen auswirken