Informe de optimización de juegos MMORPG

1. Análisis de la sobrecarga de rendimiento general de los juegos móviles MMORPG

Dos, análisis de sobrecarga de rendimiento del módulo de CPU de juegos móviles MMORPG

Tres, análisis de sobrecarga de rendimiento del módulo de memoria de juegos móviles MMORPG

Cuatro, análisis de gestión de recursos de juegos móviles MMORPG

Cinco, las sugerencias de UWA para el equipo de desarrollo de juegos móviles MMORPG

1. Análisis de la sobrecarga de rendimiento general de los juegos móviles MMORPG

El rendimiento de la CPU de los dispositivos iOS es generalmente más alto que el de los dispositivos Android. El rango principal de la CPU promedio de los dispositivos Android es de 14.4 ~ 73.6 ms, y el rango principal de la CPU promedio de los dispositivos iOS es de 9.2 ~ 43.5 ms. En los dispositivos Android, el tiempo de la CPU se concentra en el intervalo de 17-50 ms, mientras que en los dispositivos iOS, el tiempo de la CPU se concentra en 33 ms.

Seleccionamos los cuatro modelos con más tiempos de evaluación para estadísticas, estos cuatro modelos son Redmi 2, Redmi Note2, Huawei 6Plus y Samsung S6.

1) La mayoría de los juegos móviles MMORPG tienen una sobrecarga de alto rendimiento en dispositivos de gama baja, y la proporción de más de 33 ms que consume mucho tiempo varía del 60% al 70%.

2) La sobrecarga de la CPU de los juegos móviles MMORPG en dispositivos móviles de gama baja en el proceso de exquisitez ha aumentado significativamente. En comparación con el mismo período en 2016, la sobrecarga promedio de CPU de los juegos móviles MMORPG del segundo trimestre de 2017 ha aumentado en más del 50%.

Ya sea que se trate de un dispositivo Android de gama alta, media o baja, el equipo de I + D debe centrarse en la renderización, la interfaz de usuario y la carga / código, y su consumo total representa el 80% de la sobrecarga total.

Analicemos el costo de estos módulos principales en detalle a continuación.

Dos, análisis de sobrecarga de rendimiento del módulo de CPU de juegos móviles MMORPG

1. Módulo de renderizado

Severidad: infierno

Para reflejar mejor el uso general de cada parámetro de rendimiento, hemos contado el rango de uso principal de cada parámetro de rendimiento. El rango es [5% ~ 95%]. En los siguientes datos, P5 representa el 5% y P95 representa el 95% .

El número de Draw Calls en los juegos móviles MMORPG es generalmente mayor, y cuanto mejor es el rendimiento del dispositivo, mayor es el número máximo. Esto se debe principalmente a las siguientes razones:

1) Los equipos de I + D generalmente comenzaron a desarrollar estrategias de LOD de renderizado adaptativo para diferentes modelos, que incluyen principalmente el modelo LOD y el Shader LOD.

2) Además de LOD, el equipo de I + D también realizará ajustes específicos para algunos efectos de renderizado. El más común es el procesamiento de sombras. Las sombras en tiempo real se activan en máquinas de alta gama, mientras que se utilizan parches de sombras simples o proyectores. en las máquinas de gama baja se ocupan. Además, la simulación de masas de agua se utiliza cada vez más en proyectos. Activar el efecto de reflexión de la superficie del agua en equipos de alta gama también aumentará una cierta cantidad de Draw Call.

Sin embargo, los datos actuales muestran que el equipo de I + D ha comenzado a controlar el Draw Call intencionalmente. UWA recomienda que el P95 ocupado por Draw Call sea inferior a 200, y el 72,3% de los proyectos se pueden controlar dentro de este rango.

1) El número de triángulos en la representación de la escena de los juegos móviles MMORPG es generalmente alto. Y cuanto mayor sea el rendimiento del equipo, mayor será el número de picos. Según las estadísticas, el 40,4% de los equipos de gama baja puede controlar el número de triángulos renderizados por debajo de 100K.

2) La complejidad del escenario ha aumentado significativamente, aunque la cifra en el segundo trimestre de 2017 ha disminuido, sigue aumentando en un 33% en comparación con el mismo período del año pasado. Al mismo tiempo, el mayor número de parches de renderizado también aumenta en gran medida la presión de renderizado de la GPU y la presión de consumo de energía de los dispositivos de gama baja.

El tiempo medio de CPU por llamada de la operación Graphics.Bilt se distribuye principalmente en: 0,1 ~ 5,1 ms. Al igual que la sobrecarga de creación de instancias, esta sobrecarga de CPU tiene una tendencia al alza más obvia en los dispositivos de gama baja, pero se redujo drásticamente en el segundo trimestre de 2017. Esto se debe principalmente a que después del primer trimestre de 2017, los proyectos MMORPG generalmente han abierto funciones de renderizado de subprocesos múltiples.

2. Modelo de interfaz de usuario

Severidad: infierno

Los proyectos que utilizan NGUI como la solución de interfaz de usuario representan una proporción muy alta. NGUI sigue siendo la principal solución utilizada por el equipo de I + D de MMORPG para el sistema de interfaz de usuario. MMORPG es actualmente una de las categorías de juegos más complicadas en los juegos móviles. Para la selección de módulos de interfaz de usuario, la mayoría de los equipos todavía tienden a comenzar desde los dos aspectos de estabilidad y control . Esta es también la razón principal de la alta proporción continua de NGUI. la razón.

A continuación, explicaremos el tiempo de CPU y el uso de memoria de pila de NGUI y UGUI respectivamente.

La sobrecarga de rendimiento del módulo de interfaz de usuario sigue siendo muy alta y también es el segundo asesino de rendimiento más grande en nuestras estadísticas. En los dispositivos de gama baja, más del 90% de los proyectos de I + D se enfrentan a graves problemas de rendimiento en el lado de la interfaz de usuario, que se reflejan principalmente en los siguientes aspectos:

(1) La interfaz del juego MMORPG es compleja , con muchas funciones (habilidades, mochilas, roles, tareas, centros comerciales, etc.) y una gran cantidad (HUD como barras de salud, nombres, personajes flotantes, etc.).

(2) Hay una gran cantidad de paneles que deben actualizarse al mismo tiempo , como HUD, como barras de salud en movimiento, iconos de avisos de NPC que se actualizan constantemente, animaciones de recordatorio en el panel (tareas, primera carga, etc.), cuadros de chat y pantallas de viñetas que aparecen al azar Desplazar texto, etc.

La situación anterior es el principal problema de interfaz de usuario que enfrenta el equipo de I + D del proyecto MMORPG todos los días. La negligencia de un widget puede hacer que el costo de rendimiento del módulo de interfaz de usuario del equipo de I + D aumente en un orden de magnitud.

Nota: Desde el punto de vista de funciones importantes, el uso de CPU de UGUI es significativamente menor que el de NGUI. Cabe señalar que después de la versión 5.2 de Unity, algunas de las operaciones de cálculo de la interfaz de usuario se han movido a subprocesos, mientras que el rendimiento en el subproceso principal es WaitingForJob, PutGeometryJobFence, etc. En este informe, no incluimos estas dos estadísticas de costos están incluidos.

Según las estadísticas, el rango principal de memoria dinámica asignada por cada 10,000 cuadros en NGUI es de 6,1 ~ 103,3 MB, y el rango principal de memoria dinámica asignada por cada 10,000 cuadros en UGUI está dentro de los 10,9 MB. Desde la perspectiva de la asignación de memoria del montón, UGUI es mucho más bajo que NGUI.

3. Código lógico

Severidad: pesadilla

1) La frecuencia de disparo del GC es muy alta, lo cual es una de las principales causas del retraso. En la actualidad, solo el 10% de los proyectos pueden controlar la frecuencia de disparo del GC por encima de 1000 fotogramas / tiempo.

2) A medida que los juegos MMORPG se vuelven cada vez más pesados, el tiempo promedio de GC aumenta gradualmente. El GC, que consume mucho tiempo, se convertirá gradualmente en el asesino del rendimiento principal cuando el juego se esté ejecutando, ¡y el equipo de I + D debe prestarle atención todo el tiempo!

1) El tiempo medio de CPU por llamada de la operación de creación de instancias se distribuye principalmente en: 1,4 ~ 33,1 ms, y se concentra principalmente en 10 ms.

2) El tiempo de creación de instancias ha ido en aumento hasta el segundo trimestre de 2017, pero se redujo drásticamente en el segundo trimestre de 2017, lo que muestra que cada vez más equipos de I + D están comenzando a prestar atención a la gestión de recursos durante la operación del proyecto.

La operación Shader.Parse es un asesino de rendimiento más destacado. En la actualidad, el tiempo medio de CPU por llamada se distribuye principalmente en 5,8 ~ 134,4 ms. Pero a medida que más y más equipos comprenden las características de este elemento que consumen mucho tiempo, el tiempo de CPU de este elemento ha mostrado una tendencia a la baja más obvia.

4. Módulo de animación

Severidad: pesadilla

1) El costo de Animator.Update / Animation.Update es generalmente relativamente alto en dispositivos de gama baja, pero el consumo de tiempo total se redujo significativamente en la primera mitad de 2017.

2) El tiempo que consume MeshSkinning.Update es generalmente bajo.

5. Módulo de partículas

Gravedad: normal

1) La sobrecarga de CPU de los sistemas de partículas es generalmente baja, y la tendencia a la baja ha sido obvia el año pasado.

2) El número de sistemas de partículas utilizados sigue siendo elevado, lo que provocará un alto uso de memoria. UWA recomienda que el número máximo de sistemas de partículas utilizados se controle por debajo de 400, que actualmente solo se alcanza en el 24,8% de los proyectos.

6. Módulo físico

Gravedad: normal

El rendimiento del módulo físico es generalmente bueno, pero muestra una tendencia al alza más obvia, por lo que aún necesita la atención del equipo de I + D en la máquina de gama baja.

Tres, análisis de sobrecarga del módulo de memoria de juegos móviles MMORPG

La pérdida de memoria es un problema grave que se enfrenta a menudo en el proceso de desarrollo, y casi la mitad de los proyectos todavía tienen diferentes grados de pérdida de memoria. Sin embargo, podemos ver que la proporción de pérdidas de memoria está disminuyendo gradualmente. En comparación con el mismo período del año pasado, la proporción de pérdidas de memoria en el segundo trimestre de 2017 se ha reducido en un 6%.

Memoria total

Severidad: infierno

1) El valor máximo de memoria general se distribuye principalmente en el rango de 146,8 ~ 576,9 MB, y el valor medio está por encima de 350 MB;

2) Con la tendencia hacia los juegos MMORPG de alta calidad, el uso de memoria de los juegos MMORPG ha aumentado gradualmente. Aunque hubo una ligera caída en el cuarto trimestre de 2016, la memoria general ha aumentado significativamente.

Memoria de montón total

Severidad: infierno

1) La memoria de pila total máxima se distribuye principalmente de 18,3 a 117,2 MB, y solo el 34,2% de los proyectos puede controlar la memoria de pila total máxima dentro de 40 MB;

2) El uso de memoria dinámica va en aumento y se recomienda que el equipo de I + D le preste más atención. En este sentido, la UWA recomienda centrarse en los siguientes puntos:

(1) Preste estrictamente atención al uso de archivos de configuración y evite cargar archivos de configuración demasiado grandes a la vez para admitir una gran cantidad de memoria;

(2) El aumento de la memoria dinámica de muchos proyectos se debe a las actualizaciones en caliente. Por lo tanto, para el uso de datos demasiado grandes, se recomienda utilizar el encuadre y la recuperación de GC a tiempo;

(3) Evite la asignación innecesaria de memoria en el montón de código. Aunque es un cliché, se puede ver en la tendencia que la mayoría de los equipos de I + D deben prestar más atención.

Una gran parte del uso de memoria del proyecto proviene del uso de recursos, a continuación analizaremos el uso de los recursos convencionales en el proyecto.

1. Memoria de recursos de textura

Severidad: infierno

1) La memoria de textura máxima se distribuye principalmente en el rango de 27,8 ~ 174,6 MB, y se distribuye principalmente en el rango de 50 ~ 100 MB.

2) El uso máximo de memoria se redujo drásticamente en el cuarto trimestre de 2016, pero comenzó a aumentar gradualmente después de este año. Se recomienda que el equipo de I + D preste mucha atención al uso de recursos de textura de sus proyectos.

2. Memoria de recursos de cuadrícula

Severidad: pesadilla

1) La memoria máxima de recursos de la red se distribuye principalmente entre 8,5 ~ 70,4 MB y se concentra principalmente en 40 MB;

2) Los juegos MMORPG generalmente tienen escenas más grandes y más personajes, por lo que la cantidad de recursos de la cuadrícula es significativamente mayor que la de otros tipos de juegos. Sin embargo, desde la perspectiva de las tendencias de uso, la tendencia de uso en el último año ha sido relativamente estable, con un valor promedio que fluctúa alrededor de 30 MB.

1) El pico de memoria de recursos de animación se distribuye principalmente en: 3,5 ~ 58 MB y se concentra principalmente en 15 MB.

2) La tendencia de uso de la memoria es relativamente estable y la memoria máxima promedio se controla dentro del rango de 20 ~ 25 MB durante mucho tiempo.

3. Memoria de recursos del sombreador

Severidad: pesadilla

1) El pico de memoria de recursos de Shader se distribuye principalmente de 0,1 a 5,6 MB y se concentra principalmente en 1 MB.

2) Desde la perspectiva de las tendencias de la memoria, el uso de la memoria disminuyó significativamente en 2016 y aumentó ligeramente en 2017.

4. Memoria de recursos de RenderTexture

Severidad: infierno

1) El pico de memoria de recursos de RenderTexture se distribuye principalmente de 0,1 a 100,9 MB, y es relativamente uniforme en cada intervalo;

2) El uso de la memoria va en aumento, se recomienda que el equipo de I + D preste especial atención a su uso en sus propios proyectos.

5. Memoria de recursos del sistema de partículas

Severidad: pesadilla

1) La memoria máxima de los recursos del sistema de partículas se distribuye principalmente de 1,3 a 34,8 MB y se concentra principalmente en 20 MB.

2) La ocupación de memoria del sistema de partículas fue alta durante el tercer trimestre de 2016, y luego se redujo drásticamente en el cuarto trimestre de 2016, pero todavía hay mucho margen para el declive. En la actualidad, el uso de memoria del sistema de partículas es relativamente "alto", es decir, el número de activos durante el juego es mucho menor que el número total en la memoria. En la mayoría de los proyectos, el número de sistemas de partículas activos representa menos más del 10%, es decir, la memoria del sistema de partículas. La ocupación máxima debe rondar los 5 MB.

Cuatro, análisis de gestión de recursos de juegos móviles MMORPG

1) En términos de carga de recursos, AssetBundle.Load y Resource.Load son los principales métodos de carga del proyecto;

2) A través de la tendencia de llamadas, se puede ver que el uso de Recursos. Carga por parte del equipo de I + D sigue aumentando. En este sentido, UWA recomienda encarecidamente que el equipo de I + D utilice AssetBundle como el principal método de carga de los recursos del juego tanto como sea posible.

1) LoadFromFile y New WWW son los principales métodos de carga de AssetBundle en el proyecto;

2) El uso de LoadFromFile ha aumentado un 6% en el segundo trimestre de 2017. Este es el método de carga de AssetBundle que recomendamos encarecidamente en UWA DAY 2017 (después de Unity 5.3). El equipo de I + D puede comprobar comparaciones de rendimiento específicas a través de artículos relacionados en el blog de UWA.

El número de llamadas Instantiate / Destory y Active / Deactive es alto, y el equipo de I + D debe prestarle atención de acuerdo con la situación de su propio proyecto:

1) Dado que la sobrecarga de CPU de Activa / Desactivada cada llamada no es grande y no causará problemas como fallas, fallas, etc., es fácil para el equipo de I + D ignorar los problemas de rendimiento causados ​​por estas dos operaciones, por lo que no es un juego que ejecuta 10,000 El marco Activo / Desactivado tiene decenas de miles de llamadas. Por lo tanto, aquí hay mucho desperdicio de rendimiento;

2) La cantidad de llamadas a Instantiate / Destory también es alta. Aunque no es tan frecuente como Active / Deactive, la frecuencia de llamar a Instantiate cada 5 cuadros aún no se puede ignorar. Se recomienda que el equipo de I + D insista en fortalecer los recursos del proyecto gestión para evitar que se produzcan operaciones de instanciación / destino frecuentes innecesarias.

Sugerencias de la UWA para el equipo de desarrollo de juegos móviles MMORPG

Primero, ¡desconfíe de los dos principales asesinos del rendimiento, el módulo de renderizado y el módulo de interfaz de usuario! Con el creciente número de proyectos boutique de MMORPG, estos dos elementos seguirán siendo las principales prioridades del equipo de I + D en la optimización del rendimiento durante mucho tiempo.

  • En términos de renderizado, las habilidades de optimización de Draw Call han sido dominadas por más y más equipos, y con el desarrollo de equipos, el impacto de Draw Call será cada vez más pequeño. Por el contrario, el número de triángulos de renderizado se convertirá gradualmente en el nuevo cuello de botella de rendimiento del módulo de renderizado. La cantidad cada vez mayor de renderizado Triangle ejercerá una gran presión sobre la GPU, el consumo de energía y la generación de calor;
  • En cuanto a la interfaz de usuario, el costo de reconstrucción de la cuadrícula de la interfaz de usuario seguirá siendo un dolor de cabeza para el equipo de I + D durante un largo período de tiempo en el futuro. En la actualidad, el MMORPG de juegos móviles todavía se encuentra en la etapa inicial de transformación del "juego móvil final". La mayoría de los equipos de I + D consideran más Aún es la migración de funciones y la combinación con el terminal móvil, y la precipitación en la tecnología UI es relativamente débil.

En segundo lugar, en términos de código lógico, aunque la sobrecarga de creación de instancias de Instantiate ha mostrado una tendencia a la baja relativamente obvia en el segundo trimestre de 2017, todavía requiere que el equipo de I + D supervise continuamente la gestión de recursos. Al mismo tiempo, la tendencia al alza de la sobrecarga de GC es obvia y el equipo de I + D debe fortalecer el conocimiento de la optimización de la memoria de pila Mono;

En tercer lugar, la proporción de pérdidas de memoria sigue disminuyendo, pero el uso de la memoria sigue aumentando. Aunque la cantidad de memoria en los dispositivos móviles aumenta año tras año, para los equipos de juego que quieren cubrir una amplia gama de juegos, el control de la memoria sigue siendo urgente;

En cuarto lugar, en términos de optimización de la memoria, la mayoría de los equipos de I + D se centran en los recursos principales, como texturas, cuadrículas y clips de animación. Sin embargo, a través del análisis anterior, se encuentra que el uso de memoria mono montón y RenderTexture ha aumentado significativamente en 2017 En este sentido, se recomienda que el equipo de I + D preste mucha atención al uso de memoria de estos dos elementos en la próxima I + D;

En quinto lugar, todavía hay mucho espacio para la optimización de los recursos de animación y la memoria del sistema de partículas. Para el primero, se recomienda que el equipo de I + D preste atención a las siguientes tecnologías:

  • La tecnología de reducción de precisión de los clips de animación, la tecnología tiene explicación detallada y código compartido en UWA Blog y UWA Q&A;
  • Preste atención a la tecnología de retargeting, que puede reducir en gran medida el uso de la memoria de los clips de animación de múltiples roles. Se predice que a medida que el proyecto MMORPG se vuelva más serio, esta tecnología será favorecida por más y más equipos.

Para esto último, se recomienda que el equipo de I + D preste atención a la tabla de asignación de recursos del sistema de partículas, combinada con el informe de desempeño en línea de UWA, y haga un plan razonable para el sistema de partículas que se usa con poca frecuencia.

6. En términos de carga de recursos, New WWW y Resources.Load siguen siendo métodos de carga de recursos muy utilizados por los equipos de I + D. Sin embargo, UWA recomienda intentar cargar los recursos relacionados a través de LoadFromFile (Async) y AssetBundle.Load tanto como sea posible para obtener un mejor rendimiento. El equipo de I + D puede encontrar la comparación y el análisis de rendimiento correspondientes en el Blog correspondiente del Día UWA 2017;

7. Los datos anteriores son nuestra investigación general y análisis de tendencias de los datos de rendimiento de juegos móviles MMORPG. Su objetivo es mostrarle los cuellos de botella de rendimiento comunes en el proyecto y los posibles problemas de rendimiento que el equipo de I + D pasa por alto fácilmente desde una perspectiva macro. Sin embargo, también debe tenerse en cuenta que la optimización es un proceso de "quitar el capullo", que requiere que el equipo de I + D dedique mucho tiempo y paciencia para completarlo. Sugerencia de la UWA: haz más pruebas, habla con datos, ten una mentalidad de taza vacía y cero experiencia.

Supongo que te gusta

Origin blog.csdn.net/mango9126/article/details/114138041
Recomendado
Clasificación