Introducción.
Hace unos pocos días decidí subir un vídeo del actual proyecto en el que estoy trabajando, para recibir algo de retroalimentación, pensé que el vídeo pasaría sin pena ni gloria pero me sorprendió que hubo personas interesadas en preguntarme varias cosas de él, una de estas personas se ofreció a hacerme un testing para ver donde estaba el problema de rendimiento del juego, le hice un compilado para que lo probara.
Tras haberlo probado me pregunto: ¿Como le haces para que tu juego pese tan poquito?. su peso era cercano a 260mb pese a que tiene un montón de modelos, texturas, algunos sonidos etc. El juego aun está aún lejos de ser terminado, a mi mismo me sorprendió ya que no soy alguien que haga compilaciones muy seguido.
Así que a continuación explicaré cómo diagnosticar el peso y cómo solucionarlo
Diagnóstico
Para iniciar el diagnóstico lo primero que debe hacerse es una compilación rápida para windows o mac, pero no sin antes reparar todos los errores que surgen previamente de la compilación.
Si la compilación ha sido un éxito, vamos a la ventana de la consola y seleccionamos el icono de las tres líneas y damos clic en Open Editor Log, este abrirá un bloc de notas. Más o menos en la mitad del Log veras los pesos en resumen de los assets, seguido del top de los archivos más pesados.
Para analizar no importa que clase de proyecto de videojuegos sea, por lo general el peso siempre lo llevan las texturas, los sonidos, los escenarios y las animaciones, increíblemente contrario a lo que todo mundo cree, las mayas de los modelos 3D no son la causa del peso en un proyecto de videojuego 3D, del mismo modo los shaders y las scripts son lo que menos pesa en un proyecto.
Soluciones
Así que se puede vislumbrar parte de la solución, hacer mas scripts y hacer menos texturas y menos sonidos. Hay dos maneras de abordar este asunto:
Crear scripts capacitados para la creación de contenido procedimental, en este caso la producción de texturas y sonidos, pero a costo de consumo de recursos para producir este contenido alargando los tiempos de carga.
Usar texturas mas comprimidas o usar formatos mas livianos, en el caso de las texturas seria usar formatos PNG en caso de usar transparencia y usar formatos BMP para el caso de no usar transparencia.
En texturas, el truco está en comprimir bastante las texturas poco relevantes como objetos de fondo decorativos hechos para llenar el vació, puedes aplicarles indexación de colores, reducción de canales, colores web. como si se tratase de una imagen para una página web y usar tamaños potencias de 2, para que sea posible la compresión de archivo por parte del motor.
En el caso de los sonidos, reemplazar los formatos OGG y MP3, por formatos modulares como XM o IT, estos formatos son similares al midi, salvo que los instrumentos son una pequeña muestra incluida dentro del mismo archivo, garantizando que sonará igual en cualquier equipo, de resto la composición musical es una notación de texto que es interpretado por el motor.
Si quieres componer música en estos formatos, te recomiendo Open MPT. Si desea descargar música para usarla en sus proyectos, recomiendo modArchive.org, Esta pagina sobrevive a punta de donaciones y su trabajo preservando este contenido es invaluable, tenga en cuenta las licencias de uso y apoye a sus autores para que este contenido prevalezca en el futuro.
Los niveles debe reducirse la cantidad de objetos en cada escena, o hacer una mezcla de modelado modular y el modelado a la medida. una parte se soluciona poniendo los pivotes en los puntos adecuados dentro de los modelos, esto evita crear objetos vacío para corregir esos puntos.
Dejar el vicio de crear audiosources en gameobjects vacíos, usar otras soluciones mas inteligentes que el sistema de niveles de detalle de unity. y programar objetos que tengan menos dependencias de otros.
Espero que estos aportes le sean útiles para crear juegos de calidad mucho mas livianos. el marketing nos está llevando a crear contenido digital sin medir las consecuencias, solo por moda, solo por creer que si un juego es muy pesado, quiere decir que es mejor o mas divertido. luchemos contra esa filosofía inútil.
Felices trazos desarrollador, nos veremos en algún lugar en el espacio
Comments