¿A más fps mejor?

  • Por
Vemos la importancia de conseguir una relación de fps y técnicas de antialiasing adecuada.
Desde hace un tiempo vengo realizando una serie de artículos en mi blog http://speakingin.net/ sobre técnicas de antialiasing ¿qué son y cómo podemos hacer para evitar el aliasing?. Son posts que vienen a raíz de un blog en Inglés que estoy siguiendo, del autor Shawn Hargreaves, que explican muy bien algunas de las teorías más importantes que debemos saber las personas que estamos pensando en desarrollar juegos. En esta ocasión en Desarrolloweb.com veremos 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.
¿Cómo es esto posible si las películas están a 24 fps? ¿Por qué el mundo cinematográfico ha elegido un número mucho menor de fps que el que eligen la mayoría de desarrolladores de juegos?

¿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 ?
Sin embargo, si realizamos este experimento, veremos que los resultados varían en función del tipo de juego que se elija. Muchos "mirones" pensarán que el juego a 30 fps con motion blurr es el juego de 60 fps, así que el aliasing seguro que es importante. Los jugadores tampoco notarían la diferencia en algunos juegos, pero en otros juegos sí que se darán cuenta. Así que la importancia de la latencia depende del juego en cuestión.

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.
Espero que os sirva.

Nota: Este artículo es una traducción libre del post Temporal sampling frequency (aka 'framerate') de Shawn Hargreave.

Autor

Juan María Laó Ramos

Project Manager at Syderis Technologies S.L.

Compartir