Saltar al contenido
Another Indie Studio

Optimización | Cómo disminuir Draw Calls con Unreal Engine 4

Las “Draw Calls” hacen referencia al dibujado de polígonos que nuestro juego debe estar llamando en cada momento. Estos se deben procesar en nuestra GPU (Graphic Processing Unit); cuanto más alta sea esta cantidad, más difícil de procesar será para nuestra tarjeta gráfica.

En qué afecta tener más Draw Calls o menos

El motor de Unreal Engine 4 trabaja de tal forma en la que optimiza mucho mejor, un solo objeto más grande (más cantidad de polígonos), que varios objetos más pequeños individualmente.

De tal forma que es muy recomendable juntar varios modelos estáticos (es importante que dichos objetos estén fijos en la escena) para que UE4 los entienda como un solo modelo y los pueda procesar mucho mejor.

Cómo usar la herramienta Merge Actors para disminuir los Draw Calls

Para juntar varios modelos vamos a usar una herramienta llamada “Merge Actors“. Esta herramienta nos va a automatizar el proceso, respetando los LOD’s, materiales, y geometría de la malla.

Empezamos colocando los modelos a juntar en la escena del editor de Unreal Engine 4. Una vez hecho esto, vamos a seleccionar dichos modelos y nos dirigimos al panel superior del editor.

Damos clic en la pestaña “Window” -> “Developer Tools” -> ‘Merge Actors‘. Se nos va a abrir una pestaña, donde podremos especificar varias opciones para procesar los modelos.

Podemos ver que en esta pestaña hay tres apartados, pero a nosotros solo nos interesa la primera pestaña.

Para empezar, nos encontramos una lista con los actores seleccionados a juntar. Hacemos scroll vertical y veremos varias casillas que podemos marcar o desmarcar según nuestras preferencias. En nuestro caso, como solo queremos juntar los modelos para optimizar nuestro juego, vamos a dejar todas las configuracionespordefecto, asegurándonos que ‘LODSelection Type‘ -> ‘Use all LOD levels‘ (de esta forma seguirá respetando los LOD’s correctamente). También vamos a percatarnos de que los ‘Output UV‘ -> ‘Output Channel‘ (para que cada UV se aplique de igual forma que si fuera un modelo independiente). Y por ultimo, dejaremos la casilla de ‘Include Impostersmarcada, para el supuesto de un modelo muy lejano, sustituir por nuestro “Impostor Card“.

Cuando tengamos esta configuración lista, clicamos en ‘Merge Actors‘ y elegimos dónde queremos que se guarde la compilación de modelos ya juntados.

Comando para ver el rendimiento del juego

Para poder ver los datos de rendimiento en nuestra pantalla, nos dirigimos a la flechita hay en la esquina superior izquierda -> Stat -> Engine -> UnitGraph, y listo, ya podremos ver la información  en tiempo real.

Añadiendo actor al escenario

Hecho esto ya tendremos los modelos juntos y listos para colocar en nuestro escenario. Podréis ver que al remplazar los actores por separado por el modelo que acabamos de crear, la carga en la GPU se reducirá, haciendo que nuestro juego vaya más fluido y optimizado.

Tip: Si al añadir el nuevo actor, os fijáis donde esta el punto de control de este. Podéis usar el actor separado que se encuentre en el mismo sitio para ajustar correctamente la localización y rotación.

Con esto terminado, podréis optimizar un poco más vuestros proyectos, y de esa forma hacer que llegue a más publico con un dispositivo no tan potente.

Por último, me gustaría invitarte a pasarte por el canal de YouTube. Donde encontrarás un vídeo-tutorial que explica al detalle, y con varios ejemplos esto de los Draw Calls.