Lumberyard Performance Tuning Guidelines for Mobile Devices - Lumberyard User Guide

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.

Lumberyard Performance Tuning Guidelines for Mobile Devices

See the following guidelines for generating art assets for mobile games with Lumberyard and how to tune Lumberyard performance for mobile devices.

Directrices sobre recursos artísticos

En esta sección se proporcionan directrices sobre geometría, iluminación, mapeado de sombras en cascada y materiales.

Directrices sobre geometría

Siga estas directrices para crear la geometría de su juego para dispositivos móviles:

  • Utilice menos objetos individuales para reducir significativamente las llamadas de dibujo. Recomendamos que haya 750 o menos llamadas de dibujo en los dispositivos móviles.

  • Utilice instancias en los casos que proceda. To do so, create a slice in Lumberyard Editor and then instantiate multiple instances of that slice in the level.

  • Añada compatibilidad con el nivel de detalle de la geometría (NdD). Cada NdD debe tener una reducción de un 50 % de la geometría.

    • Agrupe el modelo NdD de alta resolución en _lod0_objectname.

    • Agrupe el siguiente modelo de NdD en _lod1_objectname_group.

    • Llame al modelo proxy de sombra shadowproxy.

    • Exporte el modelo de proxy de sombra con el material de proxy de sombra.

    • Agrupe el modelo de proxy de sombra en el último grupo de NdD.

      ejemplo

      A continuación, se muestra una configuración de NdD en Maya.

      
                                        Ejemplo de configuración del nivel de detalle (NdD) en Maya.
    • Haga lo siguiente para ajustar el NdD:

      1. In Lumberyard Editor, select an entity in your level that has a Mesh component.

      2. In the Entity Inspector, in the Mesh component, under Options, adjust the slider for LOD distance ratio. El control deslizante ajusta la distancia a la que aparece el nivel de detalle (NdD).

      3. Ajuste cada activo para ver solo los activos de alta resolución cuando sea necesario.

  • Restrinja su recuento de polígonos, tal y como se indica a continuación, para cada vista de la cámara en el juego:

    • Para los dispositivos de poco rendimiento, utilice 300k o menos.

    • Para dispositivos de alto nivel, utilice 700k o menos, si la CPU es el cuello de botella.

    nota

    To determine the poly count, set r_DisplayInfo to 1 in the Lumberyard Editor console. Los datos de depuración de la parte superior derecha de la pantalla mostrarán el número de polígonos de cada fotograma de la escena.

  • In the Console pane in Lumberyard Editor, set the console variable r_stats to 1 to print the number of draw calls and polygons that the current camera renders.

Directrices de iluminación

Siga estas directrices para añadir iluminación a su juego para dispositivos móviles:

  • Es importante estudiar con atención la cantidad de luces de la escena que proyectan sombras.

  • Haga lo siguiente para ajustar las luces:

    1. In Lumberyard Editor, select an entity in your level that has a Mesh component.

    2. In the Entity Inspector, in the Mesh component, under Options, adjust the value for View distance multiplier. Especifique un valor inferior para realizar un fundido de salida de la luz y detener el dibujo antes. Esta configuración es importante para el rendimiento.

  • Añada luces de zona y proyector solo si es necesario. El pase de luz es costoso.

  • Reduzca el área de luz si es posible. Sea austero.

  • Evite que las áreas de luz se superpongan.

  • Evite que las áreas de la sonda de entorno se superpongan.

  • Evite cubrir grandes áreas con sondas de entorno, ya que podrían aparecer artefactos en el borde de las áreas de gran tamaño. Por ejemplo, el tamaño 1 000 x 1 000 es demasiado grande para una sonda de entorno. Recomendamos dividir un área de ese tamaño en cuatro áreas más pequeñas.

  • Simule la luz reflejada con luces que no proyecten sombras. La iluminación global no se puede utilizar en dispositivos móviles.

    ejemplo

    La siguiente escena utiliza luces que no proyectan sombras para simular el reflejo de la iluminación global (GI).

    
                                Escena de ejemplo en la que se utilizan luces que no proyectan sombras para simular el reflejo de la iluminación global (GI).

Directrices del mapeado de sombras en cascada

Lumberyard uses console variables to specify how to generate cascade shadow maps and to improve performance for the shadow pass. También puede establecer estas variables para que afecten al motor de forma global o por nivel. Edite el archivo level.cfg para establecer las variables para un nivel específico. Para obtener más información, consulte Uso de la ventana de la consola.

  • e_ShadowsCascadesDebug – Enables the debug view for the cascade shadow maps. Cada cascada del mundo se representa con un color diferente para proporcionar información visual de la zona que cubre el mapeado de sombras en cascada.

ejemplo

El siguiente mapeado de sombras global (GSM) tiene establecida la variable de consola e_ShadowsCascadesDebug en 1.


                        Example of a global shadow map (GSM) with the e_ShadowsCascadesDebug console variable set to 1.

Utilice las siguientes variables de consola para especificar el tamaño y la forma de generar cascadas de sombras:

  • e_GsmLodsNum – Specifies the number of shadow cascades to use. El valor predeterminado es 5.

  • e_GsmRange – Specifies the size of the first shadow cascade in square world units. El valor predeterminado es 3, que abarca tres unidades cuadradas en el mundo. En el ejemplo anterior, la primera cascada de sombras se va a dibujar en rojo.

  • e_GsmRangeStep – Specifies the multiplier to use to calculate the size of the next shadow cascade. El valor predeterminado es 3.

    Por ejemplo, si establece e_GsmRange en 3, la primera cascada de sombras abarca tres unidades cuadradas en el mundo. To calculate the next shadow cascade size, Lumberyard multiplies the first shadow cascade and the value for e_GsmRangeStep. Si el valor de e_GsmRangeStep es el valor predeterminado de 3, la siguiente cascada de sombras cubriría nueve unidades cuadradas en el mundo. La siguiente cascada de sombras cubriría 27 unidades cuadradas en el mundo y así sucesivamente.

Cuando establezca variables de consola, intente encontrar un equilibrio entre la reducción del tamaño y el número de mapeados de sombras en cascada y el mantenimiento de la calidad visual del juego. Puede establecer e_shadows en 0 para desactivar las sombras, lo que puede ser necesario para dispositivos de bajo rendimiento.

Las siguientes imágenes demuestran cómo las variables de consola del mapeado de sombras global (GSM) afectan al tamaño y la distancia de cobertura de la cascada de sombras.

Imágenes de ejemplo del impacto del GSM en el tamaño y distancia de cobertura de la cascada de sombras
Set the e_GsmRange console variable to 1 to reduce the size of the shadow cascade. Set the e_GsmRangeStep console variable to 1.5 to reduce the area that each consecutive cascade covers. Set the e_GsmNodLods console variable to 3 to reduce the number of shadow cascades that Lumberyard uses.

                                        Establezca la variable de consola e_GsmRange en 1 para reducir el tamaño de la cascada de sombras.

                                        Establezca la variable de consola e_GsmRangeStep en 1.5 para reducir el área que cubre cada cascada consecutiva.

                                        Set the e_GsmNodLods console variable to 3 to reduce the number of shadow cascades that Lumberyard uses.

Directrices sobre materiales

Siga estas directrices para crear los materiales de su juego para dispositivos móviles:

  • Utilice menos objetos individuales y materiales para reducir significativamente las llamadas de dibujo.

  • Utilice atlas de texturas para reducir el número de materiales o materiales secundarios que son necesarios, reducir las llamadas de dibujo y aumentar el rendimiento.

  • Reduzca el tamaño de textura a 1024 x 1024 o menos.

Directrices sobre ingeniería

Lumberyard provides four levels of configuration files to support enabling and disabling features and functionality based on performance characteristics of the mobile devices. Encontrará los siguientes archivos en el directorio lumberyard_version/dev/Engine/Config/spec:

  • ios_low.cfg

  • ios_medium.cfg

  • ios_high.cfg

  • ios_veryhigh.cfg

  • android_low.cfg

  • android_medium.cfg

  • android_high.cfg

  • android_veryhigh.cfg

Cada archivo incluye un conjunto de variables de consola en el que puede habilitar o deshabilitar características del motor.

You can also edit the configuration files in the Graphics Settings window in Lumberyard Editor.

To edit configuration files in Lumberyard Editor

  1. In Lumberyard Editor, choose Edit, Editor Settings, Graphics Settings.

  2. En la ventana Graphics Settings (Configuración gráfica), haga lo siguiente:

    1. En Platform (Plataforma), seleccione su dispositivo, como iOS.

    2. En el archivo de configuración preferido, ajuste los valores de las distintas variables de consola. Por ejemplo, si selecciona iOS, aparecen las variables de consola y los valores de cada archivo de configuración (ios_low.cfgios_medium.cfg, ios_high.cfg y ios_veryhigh.cfg).

    Al editar las variables de consola para el archivo de configuración, el representador muestra en pantalla el aspecto que tendría un nivel en un dispositivo móvil.

    
                        Example of the Graphics Settings window in Lumberyard Editor.

Uso de los archivos android_models.xml y ios_models.xml

Lumberyard uses two .xml files to determine which mobile devices use the low, medium, high, or very high configuration settings files. You can find the android_models.xml and ios_models.xml files in the /lumberyard_version/dev/Engine/Config/gpu directory.

ejemplo Archivo android_models.xml

The Samsung Galaxy S5 line shows that Lumberyard supports the use of regular expressions when you specify the device model number. Si un modelo de dispositivo aparece más de una vez, la última instancia se lee y se utiliza con el archivo de configuración correspondiente.

<DeviceList> <Config file="android_low.cfg"> <Device model="KFTHWI"/> <!-- Amazon Kindle Fire HDX --> <Device model="Nexus 7"/> <!-- Nexus 7 --> <Device model="Nexus 5"/> <!-- Nexus 5 --> <Device model="SM-N910H"/> <!-- Samsung Galaxy Note 4 (Asia-Pacific)--> <Device model=“SM-G900\w{1,2}“/> <!-- Samsung Galaxy S5 --> </Config> <Config file="android_medium.cfg"> <Device model="SM-T217S"/> <!-- Samsung Galaxy Tab 3 --> <Device model="SM-N920C"/> <!-- Samsung Note 5 --> </Config> <Config file="android_high.cfg"> <Device model="Nexus 6"/> <!-- Motorola Nexus 6 --> <Device model="Pixel"/> <!-- Google Pixel --> </Config> <Config file="android_veryhigh.cfg"> </Config> </DeviceList>

Memoria GPU (GMEM)

La memoria GPU (GMEM) es una clase de optimizaciones que utiliza memoria local en la GPU para reducir la transferencia de grandes texturas entre la CPU y la GPU. La GMEM puede funcionar en los siguientes modos, en función de lo que admita el dispositivo móvil:

  • 256 bit mode – The engine can store three GBuffer render targets and depth or stencil in the local GPU pixel memory, while doing the preliminary Z pass, generating the GBuffer, deferring decals, and deferring rain and snow passes. Este modo también almacena las texturas de acumulación de luz difusa y especular en la memoria de píxeles de la GPU local durante los pases de sombreado diferido del representador.

  • 128 bit mode – This mode stores the diffuse and specular light accumulation textures in the local GPU pixel memory during the deferred shading passes of the renderer. En comparación con el modo de 256 bits, el modo de 128 bits proporciona un aumento del rendimiento menor. Sin embargo, con el modo de 128 bits, puede habilitar determinadas características de representación que no están disponibles si utiliza el modo de 256 bits.

  • Disabled – This mode means that GMEM is not supported or has been disabled in the configuration files.

El representador utiliza dos extensiones de OpenGL para determinar qué modo de GMEM es compatible con dispositivos Android:

  • Framebuffer Fetch (Obtención de framebuffer) (modo de 256 bits)

  • Pixel Local Storage (Almacenamiento local de píxeles) (modo de 128 bits)

For the iOS devices that Lumberyard supports, both GMEM 256 bit mode and 128 bit mode are supported.

Configuración del modo GMEM

Para habilitar o deshabilitar GMEM con la variable de consola r_EnableGMEMPath.

  • 0= Deshabilita GMEM en el representador.

  • 1= Permite que el representador utilice GMEM en el modo de 256 bits. Si el dispositivo móvil no admite el modo de 256 bits, el representador utilizará el modo de 128 bits. Si el dispositivo móvil no admite el modo de 128 bits, el representador deshabilitará GMEM.

  • 2= Permite que el representador utilice GMEM en el modo de 128 bits.

Solo puede habilitar o deshabilitar GMEM durante el inicio del motor. Debe añadir la variable de consola r_EnableGMEMPath a uno de los siguientes archivos:

  • android_low.cfg

  • android_medium.cfg

  • android_high.cfg

  • android_veryhigh.cfg

  • ios_low.cfg

  • ios_medium.cfg

  • ios_high.cfg

  • ios_veryhigh.cfg

  • system_android_es3.cfg

  • system_ios_ios.cfg

nota

Para evitar artefactos visuales y problemas de rendimiento, no cambie el valor de la variable de consola r_EnableGMEMPath en tiempo de ejecución.

Características de representación y GMEM

GMEM ofrece la flexibilidad de configurar las características de representación y modos para adaptarse a la calidad visual y el rendimiento de una amplia variedad de dispositivos móviles. Los dispositivos móviles más potentes podrían utilizar el modo de 128 bits de GMEM y seguir ajustándose a los requisitos de rendimiento necesarios. Puede utilizar los archivos de configuración para su dispositivo móvil, así como los archivos android_models.xml o ios_models.xml, para establecer sus requisitos.

Si habilita el modo de 256 bits de GMEM, no puede utilizar las siguientes características:

  • Motion blur (Difuminado de movimiento)

  • Temporal antialiasing (Suavizado temporal)

  • Screen space reflections (Reflejos de espacio de pantalla)

  • Screen space directional occlusion (Oclusión direccional de espacio de pantalla)

  • Fur (Pelaje)

  • Deferred subsurface scattering (Dispersión de subsuperficie diferida)

  • Volumetric fog (Niebla volumétrica)

  • Deferred rain or snow occlusion (Oclusión de lluvia o nieve diferida)

Si habilita el modo de 128 bits de GMEM, no puede utilizar las siguientes características:

  • Fur (Pelaje)

  • Deferred subsurface scattering (Dispersión de subsuperficie diferida)

  • Volumetric fog (Niebla volumétrica)

  • Deferred rain or snow occlusion (Oclusión de lluvia o nieve diferida)

Si desea utilizar una característica de representación que admite el modo de 128 bits de GMEM, pero no el de 256 bits, el representador establece automáticamente el modo en 128. Esto ocurre incluso si el modo se establece en 256 en los archivos de configuración.

Para utilizar todas las características de representación disponibles, deshabilite GMEM.

Tamaño de aplicación y memoria

Dado que los dispositivos móviles tienen una cantidad limitada de memoria, debe adoptar las medidas necesarias para reducir el tamaño de la aplicación y la cantidad de memoria que requiere. Siga estas instrucciones:

  • Incluya únicamente los recursos que utiliza el juego.

    • Habilite solamente las gemas que son necesarias para el juego. De esta forma, no se empaquetará código y activos innecesarios en su aplicación.

  • Incluya únicamente los activos que utiliza el juego.

    • Compruebe el directorio Cache del proyecto de juego para ver qué activos incluirá el proceso de compilación en el paquete de la aplicación.

    • En Windows, use WinDirStat para identificar los activos que utilizan más recursos y determinar si se deben incluir esos activos en el paquete de la aplicación o se deben alojar en línea como una descarga independiente.

    • Remove editor-only assets, which Asset Processor adds to the Cache directory. De este modo, se reducirá el tamaño del paquete de la aplicación final.

    • Elimine los activos del directorio del motor. Estos activos pueden aumentar significativamente el tamaño del paquete de la aplicación final, aunque el juego no los utilice. El archivo defaulttextures.xml contiene una lista de texturas que podrían no utilizar determinados proyectos de juegos. Encontrará este archivo en el directorio /lumberyard_version/dev/Engine/EngineAssets.

  • Evite utilizar asignaciones estáticas. De este modo, se reducirá el tamaño del código ejecutable y podrá administrar la memoria de una forma más segura en tiempo de ejecución.

  • Proporcione descargas de activos específicos de cada región. If your app uses localized content and you plan to deploy to multiple regions, consider dividing up your app and hosting the data for each region on Amazon S3. Luego, puede utilizar el sistema de contenido dinámico para descargar los activos específicos de cada región.

Android

Si desea reducir el tamaño de una aplicación de gran tamaño, puede utilizar las herramientas que se incluyen con Android NDK para examinar su ejecutable. Por ejemplo, puede utilizar objdump o nm. La herramienta nm puede desensamblar los archivos binarios y mostrar el tamaño de cada segmento de código. Esta herramienta también puede mostrar símbolos y detectar si el código se ha vinculado de forma inesperada al archivo binario.

Rendimiento y características de representación de partículas

Las partículas utilizan volúmenes de luz y sol para determinar la forma en que deben iluminarse en la escena. Dado que los volúmenes de luz son costosos en los dispositivos móviles, no le recomendamos utilizar esta característica en dispositivos de rendimiento medio o bajo. Para especificar la forma en que se iluminan las partículas, puede utilizar la variable de consola e_LightVolumes con los siguientes valores:

  • 0 = A las partículas no les afectan las luces de volumen ligero o del sol.

  • 1 = A las partículas les afectan las luces de volumen ligero y del sol.

  • 2 = A las partículas solo les afecta la luz del sol.