Los juegos denominados procedurales, o que generan sus mapas de manera completamente aleatoria lo hacen tan rápidamente que el proceso parece engañosamente fácil. En realidad, generar un nuevo mapa es un proceso bastante complejo y que requiere no pocos cálculos. El desarrollador Phil Dinh lo explica así.

Dinh es el creador de un juego llamado TinyKeep, y recientemente ha explicado como funcionan sus generadores de mazmorras procedurales en Gamasutra. Todo comienza, por supuesto, con un algritmo que genera un montón de estancias aleatorias en forma y tamaño. Cada desarrollador establece unas dimensiones mínimas y máximas para dar a cada mazmorra un estilo diferente. La manera de avanzar o atacar en el juego también influye en su distribución.

Una vez creadas todas las estancias, hay que separarlas. Algunos desarrolladores utilizan algoritmos de separación. Dinh se decanta por un motor de físicas. A continuación se seleccionan automáticamente las estancias principales, que son las que albergaran bosses o eventos especiales. Generalmente se seleccionan automáticamente siguiendo criterios de tamaño.

Advertisement

El siguiente paso es triangular estas estancias y seleccionar rutas entre ellas de manera que no se comuniquen todas con todas, sino que haya que pasar de una a otra en un determinado orden. A continuación, el sistema añade pasillos por el simple procedimiento de lanzar una línea vertical u horizontal en función de con cual conectaría antes las estancias. Si la distancia vertical y horizontal es la misma, se crea un pasillo en forma de L.

Por último, se seleccionan las estancias intermedias que conectan con esos pasillos y el mapa está prácticamente concluido. Esta técnica encaja en algunos juegos pero no necesariamente en todos. Phil Dinh explica los pasos mostrando incluso el código que utiliza para cada uno. Es un interesante paseo entre bastidores para los entusiastas de los videojuegos o la programación. El resultado es mapas para juegos como este. [Gamasutra vía Kotaku]

***

Psst! también puedes seguirnos en Twitter, Facebook o Google+ :)