Primer martes de mayo, y con él llega una nueva entrega de la serie de posts titulada Ecetia explica en la que tratamos de aclarar, en la medida de nuestras posibilidades, la terminología que envuelve el complicado mundo del videojuego. En poco más de un mes han pasado por aquí técnicas gráficas como Scroll Parallax, Modo 7, Bump Mapping, Clipping, Anti-Aliasing, o una de mis favoritas, el Cel Shading. Hoy le toca el turno, no a una técnica sino a un defecto, el Popping.

Cuando se habla de Popping, referido a los videojuegos, se hace referencia a la molesta aparición repentina de objetos en el horizonte. No cabe en juegos 2D, sólo tiene sentido y se produce, en entornos 3D poligonales. A diferencia del anti-aliasing que con el paso del tiempo y la mejora de las tecnologías se ha ido mitigando, el popping aún acarrea quebraderos de cabeza a los programadores y desagradables sorpresas para el jugador, que ve como, en juegos actuales aparecen objetos de la nada delante de sus narices. Se ha cebado con especial saña en los juegos de coches, donde las largas y rectas carreteras son ideales para que el Popping campe a sus anchas.

Pongo como ejemplo un título actual, y no uno cualquiera porque fue nombrado mejor juego del 2008, Grand Theft Auto IV. Niko Bellic a toda mecha por Liberty City, una ciudad inmensa llena de detalles, de una belleza sobrecogedora pero que esconde un misterio en cada calle… El de los árboles que vienen y van sin motivo aparente. Ahora están… Ahora no, y no sólo los arboles, otros objetos aparecen y desaparecen a su antojo:

Sé que es un ejemplo un tanto rebuscado, porque en GTA IV (era mucho más acusado en San Andreas) es un detalle menor que a casi nadie le amargará la experiencia de juego, pero sucede. Lo que importa ahora es: ¿Por qué se produce el Popping? Tiene una estrecha relación tanto con las capacidades de la máquina, como con las pretensiones de los programadores. En un entorno tridimensional, la capacidad de memoria RAM de la máquina, que nunca será ilimitada, es la que marca el número de polígonos que se podrá mantener en pantalla. Pero hasta el hardware más potente tiene un tope, y cuando la memoria está llena y se alcanza el límite de polígonos, los programadores deben elegir entre mantener toda la carga gráfica en pantalla con la consiguiente ralentización, o por el contrario obviar algunos polígonos, los más lejanos, y no dejar que aparezcan hasta que estén a una distancia menor de la cámara.

A través de la distancia de dibujado (draw distance), el programador fija el punto a partir del cual un polígono será visible o invisible. Más allá de esa línea los polígonos no existen a nuestros ojos, pero una vez se cruza aparecen en escena. Poner una línea del horizonte muy lejana en un escenario abierto, requiere una cantidad de memoria bastante importante porque acoge una mayor cantidad de polígonos, pero también asegura una impresión gráfica muy superior. Juegos como South Park 64 tenían una distancia de dibujado de un par de palmos a lo sumo, pero otros como Halo 3 gozan de una linea a 14 millas, al menos según Bungie.
South Park 64

Ante el Popping se pueden adoptar varias posturas. Una de ellas es no hacer nada, y dejar que los polígonos aparezcan de repente para sonrojo de los desarrolladores que no supieron, no pudieron o no quisieron, mitigar el problema. Pero eso no interesa en este artículo, es más interesante ver qué se hizo, y qué se hace para intentar dar solución al Popping:

Cuando hablo de Popping me viene a la cabeza irremediablemente Nintendo 64. Se usó y abusó del efecto niebla (fogging) para ocultar la aparición repentina de polígonos, pero fue peor el remedio que la enfermedad. En juegos como Superman 64 (considerado uno de los peores videojuegos de la historia), South Park, o, por no irme tan al extremo y nombrar uno bueno, Turok, la niebla era de una densidad tal, y estaba tan cercana que podía cortarse con un cuchillo. La idea era que el polígono surgiera de entre la niebla de forma más suave que de la nada, pero la triste realidad es que aún así se podían ver surgir los polígonos, por lo que no quiero ni pensar como sería el aspecto de muchos juegos si eliminamos la niebla. También ha sido usada de forma más elegante, como en Starfox 64, o Grand Theft Auto: San Andreas.

Otra solución es la de hacer polígonos transparentes, que aparezcan en pantalla con un suave fade-in para evitar lo brusco del popping. Es una técnica muy socorrida que ha sido usada desde los tiempos de Saturn con Sonic R, y también en el vídeo que puse más arriba de GTA IV se utiliza un efecto parecido para los arboles.

Sonic R

El último remedio contra el Popping es tal vez el más complicado, pero el que mejor resultado ofrece: Un conocimiento de las limitaciones del hardware y una programación en consecuencia. Los títulos de carreras son los que, históricamente, más sufren de popping por la velocidad a la que se genera todo, y la necesidad de ofrecer escenarios abiertos. El popping es casi inevitable, pero en esas ocasiones se podría ocultar en gran medida con un inteligente diseño del circuito, poniendo curvas donde presumiblemente van a surgir objetos de la nada y jugando con el límite de la memoria. O dejando los objetos periféricos (un árbol por ejemplo) que aparezcan de repente, pero manteniendo en pantalla el grueso del entorno, como hizo Ocarina of Time o Mario 64, que sufrían de Popping pero algo inapreciable si lo comparamos con la practica totalidad del catálogo de N64, y sin usar apenas niebla.

[Actualizado] A raíz de un comentario de un lector, Alex, añado otro remedio contra el popping que se me pasó completamente al redactar el artículo original. Merece ser recogido aquí porque, no sólo es muy usado, sino que también es muy inteligente. Se trate del conocido como Level of Detail, o Nivel de Detalle en castellano, y consiste en disminuir la complejidad poligonal de un objeto a medida que se aleja, y aumentarla cuando nos vamos aproximando a él. La falta de detalle en la lejanía suele pasar desapercibida a nuestros ojos debido al escaso tamaño del objeto a cierta distancia, por lo que evitamos el popping de una manera my elegante.