Semana 3: El Motor de videojuegos y la resolución de las pantallas

 Este es una reflexión de una técnica de re-escalado de imágenes

ANTECEDENTES:

Ustedes se preguntarán porqué los actuales videojuegos ocupan tanto espacio de disco o medios de instalación. La respuesta no es sencilla hay varios factores, pero sin duda uno de los más importantes son la texturas. A medida que avancemos en la explicación se irán explicando estos conceptos.

Los videojuegos a lo largo de la historia van cambiado de resolución. Los primeros videojuegos empezaron en 480 x 600 píxeles, cada pixel es una celda cuadrada en una matriz que representa un color en una pantalla digital o LCD como se las conoce hoy (existen otras pantallas que son analógicas que se excluyen de este análisis).

En este momento la resolución más utilizada es 1920 x 1080 píxeles (full HD) pero se estima que en el corto plazo sea reemplazada por pantallas de 3840 píxeles horizontales y 2160 píxeles verticales, más conocida como 4K.

PROBLEMA:

Podemos dividir el problema en dos partes, a saber:

La resolución de los monitores en sí misma no acarrea un problema que no sea los costos de fabricación, en este sentido se ha logrado fabricar pantallas gigantes que pueden ocupar fachadas de edificios y crecer tanto como se quiera. Pero sí a esto añadimos el cómo se representan los videojuegos en dicha pantalla, tenemos el cóctel de la tormenta perfecta.

 Los motores de videojuegos resuelven la conformación de las imágenes (que a su vez puestas una detrás de otra, dan el video) en dos partes: primero se genera un modelo espacial de pequeñas superficies poligonales conocido como "wireframe" también se lo conoce como modelo de alambre, mismo que representa los objetos y el escenario del videojuego, este proceso está a cargo del CPU. Por ello es útil tener un microprocesador muy poderoso, este wireframe se actualiza muchas veces por segundo, dando lugar a una métrica ampliamente conocida como FPS. El microprocesador puede generar un cuello de botella si no es capaz de generar un mínimo de 60 cuadros (o más exactamente wireframes) por segundo.

Los motores de videojuegos son los directores de orquesta, una vez que el CPU entrega sus cuadros, estos son básicamente un arreglo de vectores en tres dimensiones de cada arista de cada polígono, por lo tanto se pueden escalar muy fácilmente, es decir, sólo se necesita un cuadro para adaptarlo a cualquier resolución. Ahora bien, sí mostráramos la imagen al usuario tal cual la recibimos desde el CPU, la experiencia sería terrible, por ello se requiere la participación de la tarjeta gráfica o GPU.

La GPU en el segundo paso de la conformación de la imagen, toma el cuadro del CPU y calcula el resto de la escena (se podría decir que la GPU convierte un cuadro en una escena), esto quiere decir sombras, iluminación, efectos visuales, reflejos entre otras muchas tareas. Pero requiere de un input bastante polémico, se conoce como texturas. Por decirlo de algún modo el cuadro está desnudo, las texturas son como la ropa que viste al cuadro.

La segunda parte del problema son las texturas, veréis éstas no escalan en la misma medida que la resolución del monitor o el cuadro del CPU. Una textura es un mapa de bits de dos dimensiones que representa la superficie de un objeto en una escena, imaginemos que la escena contiene un oso, la textura sería muy similar a su piel puesta como alfombra. 

Ahora bien el problema va por partida doble, una textura al ser un mapa de bits no es posible comprimir, los algoritmos de compresión puede reducir una imagen de bits al 20 por ciento, pero el cálculo de la textura ocuparía muchos recursos, el otro inconveniente es el escalado que es demasiado complejo tener una sola textura para todas las resoluciones. Por ello hay una textura por cada resolución que maneja el motor del videojuego. 

Los motores actuales manejan las siguientes resoluciones: 720p, 1080p, 1440p, y 2160p. Aproximadamente un juego de estas características ocupa unos 80GB como medio de instalación (comprimido), esto quiere decir un disco Blue Ray de doble densidad, ya instalado puede ocupar hasta unos impresionantes 150 GB!

Estos volúmenes de datos ya exceden las capacidades de almacenamiento óptico, consumen tramos muy importantes del ancho de banda de Internet, ponen mucha presión a las nubes de datos, hace que la distribución a escala masiva de dichos títulos sea una pesadilla técnica y económica para los directivos de las compañías.

Las primeras consecuencias ya se han hecho notar, Sony ha anunciado que su nueva consola PS5 sólo utilizará dos resoluciones: 1080p y 2160p y en el futuro probablemente eliminen la resolución más baja. Y al momento ni siquiera se plantean el 8K y mucho menos el 16K. Los videojuegos corren el riesgo de estancarse en la resolución 2160p, pese a que ya hay GPUs que pueden mover resoluciones 8K.

Otra consecuencia viene del streaming de video, empresas como Netflix están experimentando inconvenientes de saturación de ancho de banda al tratar de implementar sus servicios en 4K, tienen que segmentar este servicio y ser muy cautos con la estabilidad de sus sistemas, pese a que los videos están comprimidos, una película en 4K ocupa un espacio de 30GB, lo que implica que de parte del usuario se requiere un canal no compartido de al menos 40Mbps.

PROPUESTA:

Una solución sería invertir una cantidad ingente de recursos en infraestructura de redes que soporten los nuevos formatos a las resoluciones requeridas, luego botar a la basura toda la infraestructura y empezar de nuevo desde cero cuando sea el próximo salto a la siguiente resolución, no es demasiado exagerado decir que dichos costos lo pagaríamos todos nosotros. De hecho eso es lo que hemos venido haciendo desde que se creó el Internet. Prácticamente se puede medir la evolución del Internet por las resoluciones.

Una solución más adecuada, es tratar de aprovechar la infraestructura construida y probablemente hacer algunas ligeras adecuaciones, sobre todo en los dispositivos terminales. Hasta el momento se ha tratado de manejar el mismo formato ya sea de un streaming o videojuego desde el origen de la transmisión hasta el destino, es decir la resolución es simétrica. La propuesta consiste en manejar resoluciones asimétricas, por ejemplo 1080p en el origen y 1440p en el destino e incluso 4K con una técnica de re-escalado más pulida.

Esto implica que el dispositivo en el destino disponga de ciertas características y datos de entrada.



Comentarios

Entradas populares de este blog

Semana 5: Predictor de encuentros deportivos

Semana 1: Lógica Proposicional