Solución de problemas de Amazon GameLift Streams - Amazon GameLift Streams

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Solución de problemas de Amazon GameLift Streams

Problemas de conectividad

Cuando configures tu servicio de backend de Amazon GameLift Streams, comprueba lo siguiente:

  • Elija Región de AWS lo más cercano posible a los usuarios finales. La alta latencia entre tus clientes y la región que aloja tu transmisión puede afectar a la calidad de la transmisión. Puedes hacer ping a los puntos finales de la AWS consola de la región para obtener una medición aproximada de la latencia.

  • Comprueba que tu grupo de transmisiones tenga capacidad para nuevas transmisiones.

  • Verifica que ConnectionTimeoutSeconds esté configurada de forma razonable. Auméntelo para que los clientes dispongan de más tiempo para conectarse antes de que se agote el tiempo de espera.

Aconseje a sus clientes que comprueben lo siguiente:

  • Abre los puertos UDP 33435-33465 para permitir la transmisión desde Amazon Streams. GameLift Si Amazon GameLift Streams no puede acceder a estos puertos, se pueden producir problemas de streaming, como una pantalla negra o gris.

  • Comprueba que tu conexión a Internet pueda mantener una velocidad de conexión de al menos 10 Mbps para una transmisión de 1080p. Si detectas problemas de red mientras juegas en Amazon GameLift Streams, es posible que tu velocidad de Internet fluctúe y que no obtengas al menos 10 Mbps de forma constante. Realiza una prueba de velocidad de Internet y continúa con los pasos de solución de problemas.

  • Usa una red cableada si es posible. Cuando utilices una red Wi-Fi, acerca el dispositivo al router para obtener una señal más fuerte.

  • Si utilizas un router Wi-Fi con bandas de 2,4 GHz y 5 GHz bandas, intenta conectarte a una banda diferente. Si no estás seguro de cómo cambiar el router a una banda diferente, visita las páginas de asistencia del fabricante o proveedor del router Wi-Fi. También puedes ponerte en contacto con su servicio de atención al cliente.

  • Identifica si otros usuarios de la misma red (especialmente cuando están conectados a una red Wi-Fi doméstica) utilizan aplicaciones que consumen mucho ancho de banda, como la transmisión de vídeo, las descargas, los juegos en línea o las copias de seguridad.

  • Cierra otras aplicaciones del dispositivo que ocupen ancho de banda.

  • No utilices una VPN o un proxy durante la transmisión. Pueden provocar latencias más altas y bloquear el juego.

  • Comprueba que estás usando Wi-Fi en lugar de redes móviles cuando juegas en un iPad o iPhone. El uso de una red móvil puede provocar problemas de conectividad.

  • Los usuarios de macOS deben deshabilitar los servicios de ubicación, ya que esto provocará que el Wi-Fi se detenga de vez en cuando, lo que provocará una mala experiencia de transmisión.

Problemas de rendimiento

En esta sección se identifican las posibles causas del bajo rendimiento de la transmisión de juegos y se ofrecen sugerencias para optimizar las transmisiones con Amazon GameLift Streams.

El rendimiento del juego se reduce cuando se transmite en Amazon GameLift Streams

Si el juego funciona bien en tu propia máquina, pero experimenta problemas de rendimiento al retransmitirlo en Amazon GameLift Streams, ten en cuenta lo siguiente:

  • Es posible que su máquina tenga un hardware más potente que Amazon GameLift Streams. Asegúrese de probar la aplicación en una máquina con un rendimiento similar al hardware que utiliza Amazon GameLift Streams. Para las clases de transmisión gen4n, esto es comparable a un ordenador con una GPU NVIDIA RTX 2060. Para las clases de transmisión gen5n, esto es comparable a un ordenador con una GPU NVIDIA RTX 3080.

  • El problema puede deberse a tu conexión de red o a la configuración de Amazon GameLift Streams. Prueba los consejos de solución de problemas de la Problemas de conectividad sección.

Si el juego es lento incluso cuando se ejecuta de forma local, tendrás que optimizar su rendimiento. Los mejores métodos de optimización dependerán del motor o marco específico que utilices.

Las aplicaciones de Windows experimentan tiempos de carga lentos o problemas de tartamudeo

Si tu juego tiene tiempos de carga prolongados o se produce un comportamiento de tartamudeo, te recomendamos que hagas lo siguiente:

  1. Asegúrese de que su aplicación esté empaquetada y optimizada para cargar el rendimiento, siguiendo las instrucciones del proveedor del motor sobre la optimización del contenido y el rendimiento de los sombreadores.

  2. Asegúrese de que su aplicación esté configurada como la aplicación predeterminada en un grupo de transmisiones.

  3. Optimice el primer lanzamiento de la aplicación en el servicio almacenando en caché los sombreadores como parte del paquete de aplicaciones.

Existen dos enfoques para habilitar el almacenamiento en caché de los sombreadores:

  • Almacenamiento en caché basado en controladores: este enfoque es específico del entorno de ejecución, la GPU y la versión del controlador. Esta opción se puede aplicar a todas las aplicaciones y, por lo tanto, es el enfoque recomendado por defecto. Los pasos de este enfoque deberán repetirse para cada GPU/driver combinación.

  • Almacenamiento en caché basado en motores: este enfoque permite almacenar en caché los sombreadores a través del motor del juego, si está disponible. Hace recaer en el desarrollador la carga de crear una caché de objetos de estado de canalización (PSO) preconfigurada. También supone que el motor es capaz de gestionar el soporte de caché para diferentes controladores en el mismo hardware de la GPU.

Como práctica recomendada, recomendamos implementar primero el almacenamiento en caché basado en controladores, ya que no requiere una comprensión profunda de cómo se implementa el almacenamiento en caché de PSO para un motor determinado.

Con estas implementaciones, los archivos de sombreado se pueden exportar y empaquetar con la aplicación para que no tengan que generarse cada vez que se inicie una nueva transmisión.

Para implementar una solución de almacenamiento en caché basada en controladores para una aplicación en tiempo de ejecución de Windows
  1. Comience a transmitir su aplicación predeterminada y reprodúzcala extensamente para generar sombreadores para la aplicación.

    importante

    Asegúrese de visitar todas las áreas o niveles del entorno para generar tantos sombreadores como sea posible.

  2. Antes de cerrar la transmisión, habilite la función de exportación en su sesión de transmisión activa. Para obtener más información, consulte Exportación de archivos de sesión de streaming.

  3. Descargue el archivo.zip de exportación de la sesión de transmisión desde el bucket de Amazon S3 que especificó en el paso anterior. Encontrará un enlace de descarga en la consola de Amazon GameLift Streams, en la página Sesiones.

  4. Localice la carpeta de sombreadores en la exportación de la sesión de streaming. Por lo general, se guarda en esta ubicación:AppData\Local\NVIDIA\DXCache. Cargue los archivos de sombreado generados (*.nvph) en el bucket de Amazon S3 de su aplicación.

  5. Crea un .bat archivo que copie los archivos de sombreado en la carpeta de almacenamiento en caché de NVIDIA durante el tiempo de ejecución. Esta carpeta suele estar ubicada en:. C:\Users\Administrator\AppData\Local\NVIDIA\DXCache Cargue el .bat archivo en el bucket de aplicaciones de Amazon S3.

  6. Cree una nueva aplicación de Amazon GameLift Streams con el .bat archivo como ruta del ejecutable.

Cuando la aplicación comience a transmitirse, el .bat archivo copiará los sombreadores pregenerados a la caché del sombreador antes de iniciar la aplicación, lo que mejorará el rendimiento de carga de la transmisión.

nota

Es posible que tenga que repetir estos pasos cada vez que actualice su aplicación o vincule la aplicación Amazon GameLift Streams a un nuevo grupo de transmisiones. Los grupos de transmisiones más nuevos pueden contener controladores de GPU actualizados del servicio.

En el siguiente .bat archivo de ejemplo, se supone que los archivos de sombreado se almacenan con el prefijo Shaders\ bucket de Amazon S3. Puede utilizar una estructura de carpetas diferente.

@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
Para implementar una solución de almacenamiento en caché basada en un motor para una aplicación que utilice Unreal Engine

Para este enfoque, puede utilizar las funciones de Unreal Engine para crear una caché de objetos de estado de canalización (PSO) para su aplicación de Amazon GameLift Streams. Una caché de PSO le permite entregar estados de canalización de gráficos precompilados con tiempos de compilación en tiempo de ejecución reducidos, lo que puede reducir los problemas durante la carga y el renderizado. Esto requiere conocimientos avanzados de Unreal Engine y, por lo tanto, no abordaremos aquí todos los detalles específicos del motor. Para obtener instrucciones adicionales, consulta las instrucciones de Unreal Engine en la sección «Flujo de recopilación» sobre cómo crear una caché de PSO integrada.

  1. Genera sombreadores para tu aplicación que tengan habilitado el registro de PSO.

    1. Cree una nueva aplicación de Amazon GameLift Streams utilizando la compilación empaquetada con la aplicación habilitada para PSO.

    2. Inicie una transmisión con un -logPSO comando en su aplicación de registro de PSO. Puede utilizar la opción argumentos de la línea de comandos en la página de configuración de la transmisión de pruebas de la consola de Amazon GameLift Streams.

      importante

      Asegúrese de visitar todas las áreas o niveles del entorno para generar tantos sombreadores como sea posible.

    3. Antes de cerrar la transmisión, habilite la función de exportación en su sesión de transmisión activa. Para obtener más información, consulte Exportación de archivos de sesión de streaming.

    4. Cierra la aplicación desde el menú o mediante los comandos de apagado de Unreal. Si cierras la transmisión directamente, no se generará el archivo de canalización de Unreal Shaders.

    5. Descargue el archivo.zip de exportación de la sesión de transmisión desde el bucket de Amazon S3 que especificó en el paso de exportación. Encontrará un enlace de descarga en la consola de Amazon GameLift Streams, en la página Sesiones.

  2. Package el archivo de canalización de Unreal Shaders en su aplicación Amazon GameLift Streams.

    1. Localice los archivos PSO grabados (rec.pipelinecache) en la sección de exportación de la sesión de streaming. Saved/CollectedPSOs Desempaquete los archivos PSO mediante los comandos de Unreal.

    2. Package una nueva compilación de Unreal con el resultado generado por el desempaquetado. Sigue las instrucciones de Unreal, en las secciones Conversión de cachés de PSO e Inclusión de cachés de PSO en tu aplicación.

      importante

      Cuando ejecute el comando Unreal en la sección «Conversión de cachés PSO», asegúrese de utilizar los archivos de entrada de la misma versión del controlador. Por ejemplo: para DX12, usa solo los SM6 archivos como entradas. De lo contrario, aparecerá un error al empaquetar la nueva aplicación.

    3. Cree una nueva aplicación de Amazon GameLift Streams para la nueva compilación empaquetada con los archivos de PSO.

    4. Al iniciar y probar las transmisiones, confirme que se esté cargando la caché de PSO. Consulta los registros del juego para ver la siguiente línea:

      Opened FPipelineCacheFile: ../../...
nota

Es posible que tenga que repetir estos pasos cada vez que actualice su aplicación o vincule la aplicación Amazon GameLift Streams a un nuevo grupo de transmisiones. Los grupos de transmisiones más nuevos pueden contener controladores de GPU actualizados del servicio.

Problemas con la aplicación

Controles preliminares

  • Ejecute la aplicación en un equipo diferente para comprobar que está correctamente empaquetada. Esto confirma que el contenido de la aplicación no contiene rutas codificadas, ni activos, bibliotecas o archivos binarios faltantes que podrían no funcionar en otros dispositivos.

  • (Opcional) Ejecuta la aplicación en una máquina con una GPU comparable a la clase de streaming de Amazon GameLift Streams. Esto verifica que la configuración de renderización de su aplicación sea compatible con la GPU y que el rendimiento cumpla con sus expectativas.

  • Abre los puertos UDP 33435-33465 para permitir la transmisión desde Amazon Streams. GameLift Si Amazon GameLift Streams no puede acceder a estos puertos, se pueden producir problemas de streaming, como una pantalla negra o gris.

La aplicación no funciona con Amazon GameLift Streams en Proton

Problemas de aplicación debido a la resolución de la pantalla

Las aplicaciones podrían bloquearse, bloquearse o renderizarse incorrectamente si intenta utilizar una resolución de pantalla completa que no sea de 1920 x 1080. Se recomienda utilizar una ventana de pantalla completa sin bordes para ejecutar la aplicación y no intentar cambiar la resolución.

La entrada clave aparece atascada en el cliente macOS

En los clientes macOS, es posible que las teclas parezcan bloqueadas repentinamente cuando se presionan simultáneamente la tecla modificadora de comandos y otra tecla, lo que repite el evento clave. Por ejemplo, es posible que la tecla de flecha se quede atascada si también se pulsa la tecla Comando. En un juego, si se utilizan las teclas de flecha para hacer girar la cámara, la cámara girará sin parar.

  • Problema: la tecla Comando de macOS se asigna al evento Metakey, que se asigna a la tecla Windows de Microsoft Windows. El problema es un error que afecta a los navegadores macOS cuando se presionan Comando y otra tecla simultáneamente, por lo que la tecla Meta se restablece al soltarla, pero la tecla de flecha no se restablece porque el navegador no capturó un evento de teclado para la tecla de flecha, por lo que el cliente del Web SDK no enviará un evento de teclado al servidor y la aplicación de streaming seguiría pensando que se está presionando la tecla.

  • Solución: si no utiliza la tecla Comando, puede filtrarla mediante el mecanismo de filtrado del teclado del SDK web (keyboardFilter) que se encuentra en la InputConfiguration interfaz del SDK web.

El movimiento del ratón se comporta de forma diferente en Amazon Streams GameLift

Si el movimiento del ratón se comporta de forma diferente al transmitir con Amazon GameLift Streams, por ejemplo, si se mueve más rápido de lo esperado, es posible que tengas que ajustar la lógica de gestión del ratón y del cursor en tu aplicación.

  • Problema: Amazon GameLift Streams utiliza una heurística para elegir si desea transmitir los eventos del ratón en modo «relativo» o «absoluto». En el modo relativo, las nuevas actualizaciones del ratón se proporcionan como pequeñas diferencias incrementales con respecto a la actualización anterior. En el modo absoluto, el cursor del ratón se coloca continuamente en una posición de pantalla sincronizada con el cliente. Cuando el cursor del sistema operativo está visible sobre el contenido transmitido, la heurística siempre selecciona las coordenadas absolutas. Esto puede provocar deltas de movimiento inesperadamente grandes si la aplicación espera actualizaciones pequeñas y relativas.

  • Solución: si la aplicación espera un movimiento relativo del ratón (por ejemplo, controles de cámara tipo FPS o interacciones basadas en el arrastre), oculte el cursor del sistema operativo durante las interacciones con el ratón. Por ejemplo, oculte el cursor al mover el ratón hacia abajo y muéstrelo de nuevo al moverlo hacia arriba. Esto garantiza que los movimientos de arrastre utilicen coordenadas relativas, con la posición absoluta sincronizada solo cuando se suelta el botón.

Para obtener más información sobre el movimiento del ratón en Amazon GameLift Streams, consulteManejo del movimiento del ratón.

La aplicación Unreal Engine se bloquea o requiere dependencias adicionales

Si su aplicación Unreal Engine se bloquea, se detiene o requiere que instale dependencias adicionales, como Microsoft Visual C++ Runtime, intente lo siguiente.

  • Usa el ejecutable correcto. Para que la aplicación funcione correctamente con Amazon GameLift Streams, establezca la ruta de la aplicación en el ejecutable completo que se encuentra en la Binaries/Win64/ subcarpeta o similar. Unreal Engine produce dos ejecutables: un ejecutable pequeño (un acceso directo) en la raíz de la carpeta y un ejecutable completo en la subcarpeta. Binaries/Win64/ Si falta el ejecutable completo, es posible que la aplicación no se haya creado correctamente. Por ejemplo, consulta la siguiente estructura de carpetas para ver un ejemplo de aplicación de Unreal:

    BuildApp |-> MyUnrealApp.exe |-> MyUnrealApp |-> Binaries |-> Win64 |-> MyUnrealApp.exe
  • Desactiva Unreal Engine Asserts. Deshabilite las macros Check, Verify y Ensure. Esto puede evitar que la aplicación cree volcados de bloqueo y, de lo contrario, la aplicación se bloquee en Amazon GameLift Streams. Si las aserciones están habilitadas, es de esperar un retraso. Para obtener más información, consulta la documentación sobre las aserciones en Unreal Engine.

    • USE_CHECKS_IN_SHIPPING=0Configúrelo para deshabilitar las macros Check and Verify.

    • handleensurepercent=0Configúrelo para deshabilitar las macros de Ensure.

La aplicación de Windows finaliza al iniciarse

Si la aplicación de Windows finaliza al iniciarse, es posible que no sea necesaria. DLLs Si la aplicación es una compilación de depuración, necesitará específicamente la versión de depuración de la biblioteca de Visual C++. DLLs

Para resolver este problema, le recomendamos que empaquete la compilación y. DLLs side-by-side Para obtener instrucciones, consulte Preparar una máquina de prueba para ejecutar un ejecutable de depuración de Microsoft.

Con el paquete DLLs, compile y pruebe su aplicación en una máquina limpia, como una EC2 instancia de Amazon. Cuando esté listo para probarlo en Amazon GameLift Streams, cree una nueva aplicación con este paquete. Asegúrese de elegir el ejecutable correcto para ejecutar la compilación con el archivo incluido DLLs.

En general, le recomendamos que primero pruebe la compilación en una máquina limpia antes de probarla en Amazon GameLift Streams. Para obtener instrucciones sobre las pruebas en una EC2 instancia de Amazon, consultaConfigura una máquina remota.

Acceso denegado al realizar una solicitud al servicio Amazon GameLift Streams

Si encuentra una excepción de «acceso denegado» al intentar realizar una acción de Amazon GameLift Streams o utilizar recursos, es posible que su función AWS Identity and Access Management (IAM) no tenga permisos suficientes. Esto se debe a que se realizan solicitudes al servicio Amazon GameLift Streams, como una llamada a StartStreamSession.

Asegúrese de que la política del rol de IAM afectado tenga los permisos adecuados para Amazon GameLift Streams. Comprueba lo siguiente:

  • Si la función de IAM tiene una política explícita de «denegarlo todo», debe incluir Amazon GameLift Streams de forma explícita como una excepción a esa política añadiendo algo "gameliftstreams:*" al elemento. NotAction Por ejemplo:

    { "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"} } }
  • Para obtener información adicional sobre la solución de problemas, consulte los mensajes de error de resolución de problemas de acceso denegado de la Guía del usuario de IAM.