Optimización y Depuración en Motores de Juegos Flashcards
Es el proceso de mejorar el rendimiento de un juego sin comprometer la calidad visual o la jugabilidad. Esto incluye reducir la carga en la CPU, GPU y memoria para garantizar una experiencia fluida, incluso en hardware limitado.
Optimización en Videojuegos
Mejora la fluidez del juego, especialmente en dispositivos con hardware limitado, y reduce las caídas de FPS.
Rendimiento
Asegura tiempos de carga rápidos y respuestas inmediatas a las acciones del jugador.
Experiencia del usuario
Hace que el juego sea jugable en diferentes dispositivos.
Compatibilidad multiplataforma
Usar modelos de menor detalle para objetos distantes (Level of Detail, LoD).
Reducir polígonos
Precálculo de sombras e iluminación en texturas para ahorrar recursos en tiempo real.
Baking de luces
Ocultar objetos fuera del campo de visión del jugador.
Culling
Usar shaders simplificados en objetos secundarios.
Reducir el uso de shaders complejos
Usar formas primitivas (cajas, esferas) en lugar de formas complejas.
Simplificar colisionadores
Reducir la frecuencia de actualización de la física en objetos no esenciales.
Limitar cálculos físicos
Evitar iteraciones costosas en cada fotograma.
Reducir el uso de bucles innecesarios
Ejemplo: Detectar colisiones solo cuando ocurren, en lugar de verificarlas continuamente.
Usar señales en lugar de verificaciones constantes
Usar formatos optimizados como DDS o PNG.
Compresión de texturas
Generar versiones más pequeñas de texturas para objetos distantes
Uso de mipmaps
Usar formatos como OGG para reducir el tamaño de archivo sin perder calidad notable.
Compresión de audio
Ocurren cuando los objetos no utilizados no se liberan de la memoria.
Fugas de memoria
Objetos que se refieren entre sí, impidiendo su eliminación
Referencias circulares
Algoritmos innecesariamente complejos o redundantes.
Baja eficiencia del código
Permite identificar cuellos de botella en el rendimiento.
Ejemplo en Godot: Profiler para medir el uso de CPU, GPU y memoria.
Herramienta de Perfilado
Muestra errores en tiempo de ejecución y permite inspeccionar variables.
Ejemplo en Godot: Consola integrada y puntos de interrupción (breakpoints).
Debugger
Ayudan a registrar eventos importantes durante la ejecución del juego.
Ejemplo de código: print(“Jugador ha recogido un objeto”)
Mensajes de Log
Dividir el código en funciones y scripts pequeños, fáciles de entender y reutilizar.
Modularidad
Usar herencia o composición para reducir redundancia.
Evitar la duplicación de código
Evitar operaciones costosas en el método _process() y moverlas a _ready() o señales.
Uso eficiente de GDScript