InicioDesarrollo de VideojuegosGenerador de Mazmorras Procedurales

🏰 Generador de Mazmorras Procedurales

Generador procedural de mazmorras interactivo: construye niveles de juego con tres algoritmos intercambiables — Partición Binaria del Espacio (BSP), salas aleatorias + corredores, y cuevas de autómata celular. PRNG con semilla para mapas reproducibles, comprobaciones de conectividad y estadísticas del suelo.

Desarrollo de Videojuegos3DModerado60 FPS
procedural-dungeon ↗ Abrir independiente

Acerca de esta simulación

Esta simulación construye un mapa de nivel de juego sobre la marcha usando tres algoritmos intercambiables: Partición Binaria del Espacio (BSP), que divide recursivamente el mapa y coloca una sala en cada hoja; un generador de salas aleatorias que dispersa rectángulos sin solapamiento y los enlaza a lo largo de una cadena de expansión de vecino más cercano; y una cueva de autómata celular que parte de ruido aleatorio y lo suaviza con la clásica regla 4-5. Un LCG con semilla (generador congruencial lineal) impulsa cada elección aleatoria, de modo que la misma semilla siempre reproduce exactamente el mismo mapa.

🔬 Qué muestra

Una mazmorra basada en cuadrícula renderizada en canvas, donde las casillas se colorean por tipo: oscuro para muros, teñido de verde para suelos de sala, azul grisáceo para corredores, y gris para suelo de cueva orgánico. Después de la generación, una doble búsqueda en anchura encuentra las dos casillas de suelo más distantes (marcadas en verde para el inicio, en rojo para la salida) e informa la longitud del camino más largo y qué porcentaje de casillas de suelo son alcanzables desde el inicio — una medida directa de la conectividad del mapa.

🎮 Cómo usarlo

Cambia entre BSP, Salas y Cueva con los botones de algoritmo. Ajusta el tamaño del mapa (24–80 casillas por lado), el número objetivo de salas, y el tamaño mínimo/máximo de sala para BSP y Salas; para Cueva, controla el porcentaje de relleno inicial y el número de pasadas de suavizado. Introduce una semilla numérica o haz clic en "Nueva semilla" para explorar diseños diferentes, y activa la superposición de estructura para ver las líneas de división BSP y los contornos de las salas.

💡 ¿Sabías que...?

La regla de autómata celular utilizada aquí — una casilla se convierte en muro si 5 o más de sus 8 vecinos son muros, de lo contrario en suelo — es la misma "regla 4-5" popularizada para la generación de cuevas en roguelikes porque un puñado de pasadas de suavizado convierte de forma fiable el ruido aleatorio en cavernas conectadas y de aspecto orgánico sin ninguna lógica de búsqueda de caminos.

Preguntas frecuentes

¿Qué es la generación de mazmorras mediante Partición Binaria del Espacio (BSP)?

La generación BSP divide recursivamente un área rectangular en dos rectángulos más pequeños, alternando entre cortes horizontales y verticales, hasta que cada región es lo bastante pequeña para contener una sala. Luego se coloca una sala dentro de cada nodo hoja, y las salas se conectan con corredores rectos o en forma de L siguiendo el orden en que se crearon. Esto produce mazmorras con una estructura natural en forma de árbol y pocas salas superpuestas, y es una de las técnicas más utilizadas en los roguelikes porque garantiza salas sin solapamiento sin ninguna comprobación de colisiones.

¿Cómo evita el algoritmo de salas aleatorias que las salas se superpongan?

El generador propone repetidamente una sala de ancho y alto aleatorios en una posición aleatoria, y luego la comprueba contra cada sala colocada previamente usando solapamiento de cajas delimitadoras alineadas a los ejes (con un margen de una casilla). Si se superpone con una sala existente, el intento se descarta y se prueba uno nuevo, hasta un número limitado de intentos. Una vez que existen suficientes salas sin solapamiento, se enlazan mediante una cadena voraz de vecino más cercano — en cada paso, la sala no conectada más cercana se une a la red en crecimiento con un corredor en forma de L, similar en espíritu a construir un árbol de expansión mínima.

¿Cuál es la regla de autómata celular utilizada para el algoritmo de cuevas?

La cueva comienza como una cuadrícula rellenada aleatoriamente con muros en un porcentaje elegido (35–60%). Luego se suaviza durante un número de pasadas: en cada pasada, cada casilla cuenta cuántos de sus 8 vecinos circundantes son muros, y se convierte en muro si 5 o más vecinos son muros, de lo contrario se convierte en suelo. Repetir esto varias veces erosiona el ruido aislado y convierte pequeños grupos de muros en paredes de cueva suaves y orgánicas — el mismo principio detrás del Juego de la Vida de Conway, aplicado a la generación de niveles en lugar de simular células vivas.

¿Cómo hace el generador de números aleatorios con semilla que los mapas sean reproducibles?

La simulación utiliza un generador congruencial lineal (LCG): una fórmula simple que transforma repetidamente un estado interno de 32 bits mediante multiplicación y suma con constantes fijas, produciendo un flujo determinista de números pseudoaleatorios. Como el generador se reinicia al mismo valor de semilla cada vez que se pulsa "Generar", introducir la misma semilla con el mismo algoritmo y parámetros siempre produce un diseño de mazmorra idéntico, razón por la cual el campo de semilla y el botón "Nueva semilla" permiten guardar o reproducir un mapa específico.

¿Qué significan las estadísticas de conectividad y camino más largo?

Después de generar una mazmorra, la simulación ejecuta una búsqueda en anchura desde una casilla de suelo para encontrar la casilla alcanzable más lejana, y luego ejecuta una segunda BFS desde esa casilla para encontrar el verdadero diámetro de la región conectada — esta es la clásica técnica de "doble BFS" para encontrar el camino más corto más largo en un grafo no ponderado. Los dos extremos se convierten en los marcadores de inicio y salida, la longitud del camino entre ellos se muestra como "Camino más largo", y "Conectividad" indica qué porcentaje de todas las casillas de suelo son alcanzables desde el inicio, lo que señala si la cueva o mazmorra tiene bolsas aisladas e inalcanzables.

⚙ Bajo el capó

Genera niveles de juego de tres formas: partición BSP con salas y corredores, colocación aleatoria de salas con un árbol de expansión de corredores en L, o cuevas de autómata celular. Con semilla para reproducibilidad.

Procedural GenerationBSPCellular AutomataGame LevelsSeeded RNG

3D · Renderizador Three.js / WebGL · Objetivo 60 FPS · funciona completamente en el cliente, sin instalación

¿Qué encontraste?

Añadir pasos de reproducción (opcional)