Premios Xataka México 24 powered by Schneider Electric

Generación procedural en los videojuegos: cuando las matemáticas facilitan el trabajo creativo

La programación de videojuegos no es cosa sencilla, construir universos tan detallados es siempre un reto que pone a prueba varios campos de la programación, desde la visión computacional hasta el diseño y manipulación de texturas. Una de las herramientas más poderosas que se han creado para el desarrollo del gaming es la Generación Procedural.

En este artículo les contaremos cómo los programadores han creado este inteligente algoritmo que ha "facilitado" el trabajo a los desarrolladores en el mundo del videojuego, permitiéndoles desatar un enorme poder para diseñar universos.

18 quintillones de planetas

En pocas palabras, la generación procedural es una herramienta de desarrollo que ayuda a los programadores a diseñar paisajes, animales y hasta planetas. Gracias a ella, es relativamente sencillo crear mundos que se sientan vivos, cambiantes, y que no generen una sensación de vacío. Tal es el caso de uno de los títulos más polémicos de los últimos años: 'No Man's Sky'.

Durante verano de 2016 fue publicado 'No Man's Sky', un título que literalmente prometía ser un universo dentro del videojuego. Este título podría ser fácilmente reconocido como el juego más grande de la historia, en el sentido de que tan grande es en cuestión "de espacio", pues cuenta con más de 18 quintillones de planetas. Más precisamente, su universo contiene a 18,446,744,073,709,551,616 planetas para explorar.

Pero, cómo probablemente ya te hayas puesto a pensar, hacer 18 quintillones de planetas de manera artesanal tardaría eones, incluso para un gran grupo formado por los mejores programadores del mundo. El diseño de esta enorme cantidad de cuerpos celestes fue realizado por una pequeña división de Hello Games en solo tres años gracias a la generación procedural.

Pero bueno, ¿Cuáles son los fundamentos de la generación procedural? Como la base de muchas cosas en el mundo, encuentra su origen en las matemáticas, más en concreto, en las ecuaciones de ruido y en el algoritmo de Perlin.

Ruido

Un ejemplo de ruido es la Radiación de Fondo de Microondas, que podría ser utilizada para generación procedural

Ken Perlin actualmente es un reconocido profesor del Departamento de Ciencias Computacionales en la Universidad de Nueva York, pero durante la producción de la primera versión de 'Tron' (1982), trabajó dentro del equipo de animación de la película.

Tras quedarse frustrado por lo "robóticas" que le resultaban las imágenes generadas en computadora, decidió ponerse manos a la obra y terminó publicando un artículo llamado An Image Synthesizer, donde presentaba un método para generar texturas de una manera "más natural".

Universo de Tron (1982), previo al desarrollo de la generación procedural

Este algoritmo permite ir de un número a otro de manera aleatoria pero manteniendo cierta "suavidad" al estar limitada a un cierto sector acotado. De esa manera, el resultado no de grandes saltos que afecten a la continuidad de una imagen. Podemos imaginar esto como poner una marca de inicio en el primer número después del punto de Pi y poner una marca de límite en el decimoséptimo digito de Pi después del punto.

A través de procesos como el del ruido de Perlin, se pudieron crear imágenes y paisajes más realistas. Como podemos ver en la siguiente imagen.

Imagen creada con generación procedural haciendo uso del ruido de Perlin | Obtenida de Wikipedia

Un algoritmo flexible

Pero el ruido no trabaja de manera mágica ni autónomamente. Como con la física, nada se genera de manera espontánea, y para que la generación procedural funcione, se necesita de diseñadores que le den las piezas con las cuales comenzar a trabajar.

Las variables que pueden introducirse en los algoritmos de generación procedural pueden ser, por decirlo de alguna manera, bloques de pasto, árboles, piernas, cuernos, cuerpos de agua, ojos y hasta montañas, muy al estilo de 'Minecraft', juego que de hecho utiliza generación procedural.

Teniendo una especie de base de datos con todas las piezas con las que se puede jugar, el algoritmo puede comenzar a trabajar. Esta base de datos son generalmente modelos y assets creados por los diseñadores del título. El equipo de desarrollo toma una función de ruido y comienza a decirle al algoritmo que necesita en cada zona o en cada planeta, o en cada sector del universo como en 'No Man's Sky'.

Entonces, de manera suave y sin discontinuidades evidentes, se pueden crear mundos de manera relativamente random. De hecho, es muy importante tener claro cuales son las diferencias entre Generación Procedural y Generación Aleatoria. Ya conocemos a la primera, pero la segunda suele confundirnos fácilmente y hacernos creer que son sinónimos, pero no.

Un algoritmo semi aleatorio

Imagen de 'Moonlighter', desarrollado por Digital Sun

La Generación Aleatoria simplemente se encarga de distribuir lo que ya tiene de manera aleatoria, valga la redundancia. Por ejemplo, un roguelike muy conocido como lo es 'Moonlighter' utiliza Generación Aleatoria para distribuir sus mazmorras que siempre contienen lo mismo pero que casi nunca se repiten. Estos algoritmos no ayudan a crear nada nuevo, solo reparten las cartas que ya tienen para acomodarlas de manera distinta.

Por el contrario, la Generación Procedural se puede adaptar para crear cosas nuevas. Un mismo algoritmo puede crear paisajes montañosos con enormes y dentadas sierras, pero también puede crear montes achatados y pequeños que den una vista un tanto más plana. Por otro lado, puede crear enormes campos de pasto verde al estilo Windows, o hacer que esa hierva se vea espesa, descuidada y salvaje.

Una herramienta que se vuelve más poderosa

Con el avance de la tecnología, donde cada vez es más sencillo procesar y almacenar datos, la generación procedural cobra más fuerza cada día. No solo porque se pueden hacer cálculos más rápidos y grandes para generar mundos, sino porque cada vez estos trabajos pueden verse más realistas.

El ejemplo más reciente de esto lo podemos encontrar en 'Starfield', próximo juego de Bethesda Game Studios que lleva 25 años en desarrollo. Este título puede parecernos una especie de 'No Man's Sky' en esteroides, pero nada esta más lejos de la realidad pues el enfoque es totalmente distinto a nivel narrativo y de jugabilidad. Pese a ello, algo que sí comparten es la creación de mundos por medio de la generación procedural.

Starfield tendrá alrededor de 1000 planetas, mucho menos que No Man's Sky pero muy probablemente más detallados

De cualquier manera, el avance que se ha tenido en la computación ha permitido a los programadores tener las herramientas suficientes para crear títulos realmente impresionantes y profundos. Mientras tanto, aquí les dejamos algunos juegos que se basan casi por completo en la generación procedural.

Deep Rock Galactic

Un FPS cooperativo de 1 a 4 jugadores que cuenta con enanos espaciales malvados, entornos 100% destructibles, cuevas generadas procedimentalmente y hordas interminables de monstruos alienígenas.

Terraria

Cava, lucha, explora, construye: El mundo mismo está al alcance de tu mano mientras luchas por la supervivencia, la fortuna y la gloria. ¿Te adentrarás en las profundidades de las extensiones cavernosas en busca de tesoros y materias primas con las que crear equipos, maquinaria y estética en constante evolución? ¿Quizás prefieras buscar enemigos cada vez más grandes para poner a prueba tu temple en el combate? ¿Quizás decidas construir tu propia ciudad para albergar a los misteriosos aliados que puedas encontrar en tus viajes?

Unrailed!

Juego multijugador cooperativo en el que tienes que trabajar junto a tus amigos para construir una vía de tren a través de interminables mundos generados procedimentalmente. Domina los encuentros aleatorios con sus habitantes, mejora tu tren y evita que descarrile.

The Universim

Salta directamente a la gestión de tus propios planetas mientras guías una civilización a través de los tiempos. Construye el imperio definitivo en The Universim, una nueva clase de God Game en desarrollo por Crytivo.

Ver todos los comentarios en https://www.xataka.com.mx

VER 0 Comentario

Portada de Xataka México