Lista de reproducción completa del tutorial Voxel Terrain Tutorials in Godot, creada por MakerTech
https://www.youtube.com/playlist?list=PLMQtM2GgbPEW8ElbOfc49QWV0eOquQiic
Vamos a ver cómo mejorar el rendimiento evitando la caída de FPS provocada por el exceso de bloques individuales en escena.
En este vídeo se explica cómo usar el nodo MultiMesh para generar un enjambre de bloques de forma más eficiente, además de asignarles colores aleatorios.
Vamos a reemplazar el nodo DefaultCube(CSGBox3D) por el nodo MultiMeshInstance3D.
Modificamos los parámetros del inspector del MultimeshInstance3D.
Actualizamos el script de la escena.
Dejo el código para agregarle colisiones a los bloques comentado.
Ahora, en el inspector del mundo, podremos seleccionar los colores que se dibujarán en los bloques.
Podemos ver el antes y el después de la mejora de rendimiento: tanto el Total Object Drawn como el Total Draw Calls se han reducido notablemente.
Por lo que entiendo, ahora el motor está dibujando el jugador, el suelo y el enjambre de bloques como un único objeto gracias a MultiMesh, en lugar de renderizar cada bloque por separado.
Por lo que voy asimilando, a pesar de la gran optimización conseguida, dentro del MultiMeshInstance siguen estando todos los bloques, lo que aún puede causar problemas de rendimiento.
En la siguiente entrada iremos un paso más allá: solo dibujaremos la geometría de los bloques visibles para el jugador. El interior de ese mazacote de bloques estará completamente hueco, sin ningún enjambre de cubos ocultos de por medio.
Espero que a lo largo de los videos, agilice la generación de mundo, el juego ha dejado de ir lageado, pero la generación del mundo no se acelerado, aunque una pantalla de loading me vale.
No hay comentarios:
Publicar un comentario