Vemos la importancia de conseguir una relación de fps y técnicas de antialiasing adecuada.
Jugador: "vaya tela, este juego va muy lento, va a muy pocos fotogramas por segundo "
Desarrollador: "estamos teniendo problemas de aliasing debido a una baja frecuencia de refresco "
Una de las encrucijadas a las que nos encontramos en el desarrollo de videojuegos siempre suele ser elegir entre conseguir un alto número de fotogramas por segundo, teniendo entonces poco tiempo para procesar cada uno de ellos, o reducir su número y tener más tiempo para procesar cada fotograma para poder dibujar los elementos que aparecen a una calidad mayor.
Encontrar el equilibrio entre estas dos opciones es algo siempre difícil, dependiendo del juego, su género, y las preferencias que cada uno tenemos, sin embargo hay verdades como puños que siempre se cumplen:
- Reducir los frames por segundo (fps) a menos de 30 no suele ser una buena idea.
- 30 fps es lo normal, pero 60 es mucho mejor.
- Más de 60 fps, no merece la pena ya que a partir de ahí se consiguen grandes beneficios.
¿Puede que sea por tradición, para mantener la compatibilidad con decisiones que se tomaron en los años 20? Incluso cuando se diseño IMAX en la década de los 60, se especificaron cámaras, cintas y pantallas que mantenían la frecuencia de 24 fps. Y hasta hace poco, al principio del siglo XXI, en la guerra entre el Blueray y los HD DVDs se seguían manteniendo esos 24 fps. Parece que el mundo del cine no ve ninguna razón para aumentar esos 24 fps, al igual que muy pocos desarrolladores se preocupan de conseguir más de 60 fps.
Vale, una teoría: quizás la diferencia es que los juegos son interactivos, mientras que las películas son "simplemente" entretenimiento pregrabado. A menor fps habrá más latencia entre mandar la señal hasta que cambia la pantalla. El botón de pausa del mando a distancia de mi DVD tiene unos 5 segundos de latencia, lo cual no me importa mucho cuando estoy viendo mi película favorita, pero puede ser de locos cuando voy a pegarle un tiro en la cabeza a un alien del Halo.
Y la última teoría: ¿Puede que sea por el aliasing? Los gráficos en tiempo real se van generando al momento, cada frame se renderiza sin tener en cuenta el anterior ni el siguiente. Las películas, sin embargo, son "antializadas" perfectamente, debido a que la cámara consigue captar fácilmente todas las luces que llegan al sensor.
Todos hemos visto el resultado de intentar fotografiar a algo que se estaba moviendo muy rápido y también hemos visto qué pasa cuando alguien con mal pulso nos ha hecho una foto. Esas vibraciones no quedan bien en una foto, sin embargo cuando se trata de un video se consigue un efecto de antialiasing que hace que el video parezca profesional y todo.
Así que ¿Cuál es la teoría correcta? En los juegos ¿nos preocupamos más por los fps debido a la latencia o por el aliasing?
Podríamos hacer un pequeño experimento. Crear un juego que se ejecute a 60 fps. Hacer una versión del mismo juego a 30 fps. Hacer una tercera versión del juego a 30 fps pero aplicando técnicas de antialiasing de alta calidad (conocido como motion blur). Hacer que algunas personas jueguen a las tres versiones. Conseguir otras personas que vean a las personas jugar. Y ahora a comparar sus reaciones:
- Si el aliasing es un factor importante, entonces los "mirones" podrán distinguir cuál es el juego de 30 y cuál es el de 60 fps, sin embargo no podrían distinguir el juego de 60 fps del de 30 fps con motion blur.
- Si la latencia es lo importante, los jugadores podrán distinguir el juego de 60 fps del de 30 fps con motion blur, aunque los "mirones" no puedan.
- Si todos pueden distinguir cada versión del juego, ambas suposiciones están equivocadas.
- Si nadie puede distinguir la diferencia, deberíamos dejar el juego entero a 30 fps y listo ?
La sensibilidad de la latencia depende del dispositivo de entrada. Cuando movemos un ratón, el lag más mínimo en el movimiento del cursor se nota (por eso el ratón tiene un hardware dedicado para él, permitiendo una actualización más rápida, incluso mayor que el framerate de cualquier juego). Lo mismo ocurre cuando manejamos aplicaciones con los dedos, como cuando hacemos zoom en un dispositivo táctil a una foto. Estamos manipulando algo y esperamos que responda perfectamente al movimiento de nuestros dedos. Otros controles menos directos, como presionar un botón para disparar o la conducción de un vehículo, permiten una tolerancia a la latencia mayor. A medida que las cosas se vuelven más indirectas, la latencia de respuesta es menos importante, por eso los juegos en tercera persona toleran framerates menores que juegos en primera persona.
¿Qué podemos aprender de todo esto?
- Si tenemos un juego a 60 fps, e intentamos encontrar una forma de conseguir gráficos más detallados, una opción interesante sería bajarlos a 30 fps añadiendo técnicas de motion blur. El objetivo de esto es conseguir que el coste de la técnica de motion blur sea menor que tener 60 fps, consiguiendo un efecto visual equivalente y liberando un montón de ciclos en la GPU.
- Si tenemos un juego a 30 fps o menos, deberíamos evitar aquellos comportamientos de control que hacen que la latencia sea apreciable para el jugador.