Algunos meses atrás, empecé con un proyecto de juego, del cual saldrá una primera alpha dentro de poco; y aunque se trata de una experiencia lineal muy guiada y scripteada, si que contendría secciones de exploración para añadir profundidad a ciertos sistemas; y al investigar sobre el tema encontré bastante interesantes y diversos los métodos utilizados para su generación.
Originalmente iba a adjuntar implementaciones web de estos sistemas, pero he preferido no hacerlo inicialmente, ya que estas se van a utilizar en el apartado de herramientas como recursos.
La fuente de información principal es el TFG de Rubén Martínez Vilar, Videojuego basado en la generación procedimental de mundos o niveles.
Lo primero a preguntarse sería el porque generar proceduralmente mazmorras y cuevas en videojuegos, aunque es bastante evidente, con una buena generación el jugador obtiene más variedad en los mapas, así como rejugabilidad que proporcionan valor adicional al juego.
Al existir diferentes tipos de videojuegos, con diferentes estructuras, también son diferentes los estilos de mapas y mazmorras, la mas sencilla y con la que vamos a trabajar es la creación de estos mapas, usando una cuadricula en 2 dimensiones.
Sistema de Automatas Celulares
Similar al archiconocido juego de la vida, esta forma de generación utiliza una matriz de tamaño del mapa, con una configuracion inicial de celdas ocupadas por paredes y por suelo aleatorias, que siguiendo unas reglas sencillas con el paso de diferentes iteraciones llega a estados más similares a los hechos por un humano.
Este sistema de generación, debido a su variabilidad, se utiliza más para la generación de cuevas, o juegos con las paredes destruibles; que para la generación de laberintos, porque debido a las mismas reglas que lo hacen interesante, pueden volver el reto de explorar la mazmorra en algo trivial si se genera como un pasillo ancho.
Al hacer click en la siguiente imagen, que representa una cueva utilizando este método, se abrirá la página con demo con la que se generó.
Cueva generada utilizando este método |
Métodos de Mazmorras Aleatorias
Este apartado se divide en múltiples posibles técnicas, como por ejemplo en Binding Of Isaac, donde se utiliza un modelo de crecimiento central, donde siempre existe una habitación inicial con diferentes variantes, y cada habitación tiene una forma diferente, con diferentes números de puertas, que se utilizan para conectar directamente con la siguiente, como hay diferentes variantes compatibles, durante la generación se pueden seleccionar diferentes habitaciones que dependiendo de su selección, alterarán las futuras opciones; no se pueden conectar 2 habitaciones que no tengan puertas disponibles.
En el caso de Enter The Gungeon, ocurre algo similar al caso anterior, aunque primero se colocan las habitaciones y luego se unen mediante pasillos, usando algoritmos para el trazado de caminos.
En los dos casos las habitaciones están pregeneradas, con los accesos tanto de entrada como de salida predefinidos, esto requiere que los creadores dediquen tiempo a generar una variedad de habitaciones, pero aún así es la variante más utilizada, en videojuegos independientes.
Partición Binaria de espacio
Este método, aunque se podría calificar como un método aleatorio, su implementación es lo suficientemente explicita como para merecer un apartado separado, aunque puede usarse como base para la colocación de las habitaciones prediseñadas que luego serán conectadas por pasillos.
El método consiste en dividir en 2 secciones, en su forma mas sencilla; el espacio disponible de forma vertical u horizontal alternando entre estas, las secciones no deben ser de igual tamaño, una vez divididas se repite el proceso, tantas veces como sea necesario, finalizando cuando una sección llegue al tamaño mínimo o se tengan el número necesario de secciones donde colocar habitaciones.
Esta ha sido una pequeña recopilación de los métodos para la generación de Mazmorras procedurales en videojuegos.