Diario de desarrollo: El reto de la generación procedimental

Diario de desarrollo: El reto de la generación procedimental

¡Muy buenas de nuevo a todos! Aquí estamos otra vez para contaros un poco más sobre ODA y, sobre todo, poneros al tanto del progreso que ha tenido el proyecto durante este tiempo. Y es que no ha sido precisamente poco el esfuerzo que he dedicado a crear un algoritmo procedimental que sea capaz de generar las plantas de la mazmorra de una manera orgánica, lógica y correcta.

Todo comenzó con un gran salto: del 2D al 3D. En un principio, el juego no pretendía ser tridimensional; mi intención original era crear un mapa en 2D con vista cenital (desde arriba), algo muy sencillo pero que resultara igual de jugable. Con esa idea en mente, diseñé las distintas piezas de la mazmorra como si fueran parte de un puzle: salas de diferentes tamaños (pequeñas, medianas y grandes) y pasillos de todo tipo (rectos, en codo, cruces y en T). Lo básico para que el generador automático pudiera darles forma.

Sin embargo, de sencillo no tuvo nada. En el proceso aprendí que las reglas lógicas son fundamentales para que la generación automática funcione. Hacer que el código coloque piezas en un lienzo acotado y que cada una ocupe un número de grids (casillas) concretos no garantiza, por sí solo, que se conecten bien. Hubo que dotar a cada pieza de múltiples variables: rotación, conexiones válidas y, sobre todo, programar la lógica para que los pasillos y las salas encajaran con sentido.

Cuatro meses de batalla y un cambio de rumbo

A medida que probaba el generador, me iba topando con reglas que a simple vista parecen obvias, pero que no tienes en cuenta hasta que te pones a programarlas: evitar que las piezas se solapen, controlar que no se salgan de los límites del mapa o calcular el espacio libre que necesita cada estructura.

En total, hacer que el generador automático funcionara me llevó cerca de cuatro meses. Dos de ellos fueron una lucha directa y sumamente frustrante, porque el resultado casi nunca era el que yo buscaba. Durante el camino estudié de todo: proyectos de generación de mapas en GitHub, trabajos universitarios, foros, Reddit y webs especializadas. Curiosamente, ninguna de las pistas que encontré en internet me dio la respuesta definitiva, pero sí me aportaron el conocimiento necesario para saber qué caminos no debía tomar.

Tras esos dos meses encallado en la frustración, encontré la clave conversando con la IA: había que cambiar de entorno. Hasta ese momento seguía atrapado en la lógica de Node.js y Discord. La solución pasaba por cambiar la plataforma donde reproducir el juego, y de todas las alternativas, la vencedora indiscutible fue Vite. Su velocidad para arrancar proyectos web y su compatibilidad con frameworks 3D como Three.js nos abrían las puertas a un mundo completamente nuevo.

Poniendo orden al caos

Las soluciones no llegaron solas ni de la noche a la mañana. Trasladar el código base fue relativamente sencillo gracias a la IA, pero hacer que todo funcionara en el nuevo entorno ya fue otra historia. Sin embargo, ver el proyecto en un entorno 3D, donde mis peticiones se reflejaban directamente y se volvían casi tangibles, me dio el subidón de energía que necesitaba para no rendirme.

A partir de ahí, mi batalla dejó de ser contra la lógica del algoritmo y pasó a centrarse en la organización. Me propuse refactorizar el proyecto, poniendo cada cosa en su sitio y priorizando el orden estricto por encima del deseo de añadir novedades. Me obligué a no dispersarme y a no saltar de una tarea a otra: primero se solucionaba lo principal, y solo entonces se pasaba al siguiente paso lógico que el proyecto requería.

Gracias a esa disciplina, hoy puedo decir con orgullo que el generador de mapas automático funciona a la perfección. A día de hoy, el algoritmo no solo ensambla de forma impecable las piezas de cada planta, sino que también distribuye de manera orgánica el mobiliario, las trampas, los enemigos y los eventos narrativos.

El sistema ya es capaz de generar los 70 niveles que componen las 7 plantas de la mazmorra. Y lo mejor de todo: los genera de forma completamente distinta para cada jugador, logrando que la experiencia en ODA sea siempre única, impredecible e intransferible.

El camino por delante

Con el núcleo del generador procedimental por fin asentado, el proyecto ha entrado en una fase apasionante. Ahora ya estoy listo para centrarme en los siguientes pasos cruciales: implementar todo el lore que dará vida al mundo, ajustar las dificultades, diseñar las trampas, equilibrar el sistema de botín (loot), programar la IA de los enemigos y pulir unas cuantas sorpresas más que tengo guardadas bajo la manga.

Pero todo eso os lo iré contando al detalle en la próxima entrega del desarrollo. Espero de verdad haber despertado vuestra curiosidad y que os entren tantas ganas de descubrir los secretos de la mazmorra como las que yo tengo de seguir creándola.

¡Os leo en los comentarios! Como siempre, muchísimas gracias por vuestro tiempo y por acompañarme en esta aventura.