Informes

Cómo se hizo… Donum

Por Juan Antonio Fernández @Bit_fans

Siempre me atrajo la resolución de laberintos y puzles, como a tantas otras personas. Es algo bastante habitual. El desafío que supone resolver lo aparentemente irresoluble siempre ha cautivado a los seres humanos, desde la antigüedad, siendo así los laberintos protagonistas de estudios, experimentos científicos, ensayos literarios, novelas, historias reales y ficticias, pasatiempos, juegos y películas a lo largo de la historia.

Una muestra de ello se encuentra en mitos tan antiguos como El Laberinto del Minotauro, o más recientemente, en novelas y películas como El Nombre de la Rosa, Dentro del Laberinto, El Corredor del Laberinto o Cube. La lista de nombres sería enorme.

El comienzo

FRED (INDESCOMP, 1983)
FRED (INDESCOMP, 1983)

Muchos videojuegos, como el conocido Fred (Indescomp, 1983), surgieron como una forma de implementar un algoritmo para resolver laberintos. Mi pasión por estos, unido a mi interés creciente por desarrollar un juego para ZX Spectrum y, cómo no, a las aventuras de texto, fue el origen de Donum.

Al principio solo quise realizar un pequeño programa personal que me permitiera navegar libremente por un laberinto, nada ambicioso (así comienzan la mayoría de mis proyectos). Dado que quería que el programa fuera relativamente rápido, decidí implementarlo en ZX Basic de Boriel.

En ese momento no necesitaba la velocidad del ensamblador, pero tampoco las restricciones impuestas por el Sinclair Basic de siempre. De manera que me puse a ello y en un par de días el programa ya estaba funcionando en Spectaculator, el emulador que siempre suelo utilizar, por defecto, para jugar en Windows en esta magnífica máquina de 8 bits.

Creo que fue una coincidencia que, un par de días después, volviera a ver una de las películas que más me ha llamado la atención en los últimos años por su originalidad, Cube. Nada más verla me entraron unas ganas irresistibles de implementar el cubo en mi programa, parecía bastante fácil. Pero como también había estado jugando durante esos días a una aventura conversacional clásica, quise implementar una pequeña rutina (a la que de ninguna manera podría llamarle parser) para poder moverme mediante un input nada pretencioso.

No necesitaba nada especial, ni requería de la potencia de un parser profesional como DAAD o similares, ya que la rutina solo debía reconocer los comandos básicos para moverme en las seis direcciones del cubo: norte, sur, este, oeste, arriba y abajo; y solo en aquellas salas (localizaciones) en las que fuera posible hacerlo.
En menos de un mes ya tenía un programa totalmente funcional, con gráficos bitmap, descripción de localidades, etc, etc. La cosa podría haberse quedado aquí, y el juego, aunque bastante simple, podría haber salido así.

Un giro a la historia y a todo el juego

American Horror StoryPero, de nuevo por casualidad, comencé a ver una conocida serie de televisión llamada American Horror Story (puntualizar aquí que las series, películas y libros de terror también son otro de mis hobbies). Y aquí vino un punto de inflexión, el más importante, en la historia del juego, que hasta ese momento no tenía ni nombre.

Conforme veía la serie, me fui convenciendo de que debía darle a mi juego un toque de terror, una ambientación tétrica y una historia mucho más densa, con un trasfondo detrás que diera sentido al espacio cúbico que había creado. Los siguientes meses pasaron rápidamente, recogiendo ideas, haciendo bocetos, tomando notas, y viendo más series y películas de terror, leyendo libros y revisando antiguas series como Death Note, o películas como Hellraiser. Sin darme cuenta, Donum estaba surgiendo…

En cuanto decidí incluir en la historia un extraño artefacto de forma cúbica, como no podía ser de otra forma, mezcla del cubo de Hellraiser y del Death Note enviado a la tierra por los mismísimos shinigami, el proyecto adquirió su primer nombre: The Dream Box.

Se mezclaron así en el juego historias, leyendas y mitos de gran parte de Europa (Noruega, Dinamarca, Italia, Grecia o Rumanía), así como de parte de Asia. Un crisol que pone nombre a la historia y a todos los personajes del juego. Sirva como ejemplo la denominación de «guddom», nombre con el que se autodenominan esas criaturas o seres malignos que pueblan el juego, y cuyo significado en noruego es «deidad». También otros nombres propios como Simbion, Ignitus, Lancos o Calator, son derivados del latín, danés, rumano y otras lenguas.Donum_Caja-de-sueños

«Desde que te encontraste aquella extraña caja en tu jardín, cada noche, cada sueño, se ha convertido en una auténtica pesadilla para ti. Una novela de terror de la que no sabes cómo escapar. Lo único que puedes hacer de momento es jugar al macabro juego que unos extraños seres, que se hacen llamar «guddomer», te obligan a jugar cada noche. Ahora, tu único propósito es sobrevivir y que tu alma no se convierta en esclava para toda la eternidad… No estás preparado para esto. Ningún ser humano lo está».

Un juego que crece eternamente

La historia, que había crecido, me obligaba ahora a ampliar mi pequeña rutina del input. Era necesario ya examinar cosas, coger, dejar y usar objetos, y por tanto manejar un pequeño inventario, responder preguntas, etc. Pero de nuevo no vi necesario un parser profesional. Y de todas formas, lo que tenía hecho hasta ahora era muy ligero en cuanto al número de bytes que ocupaba y muy rápido a la hora de ejecutarse. Algo clave en un pequeño ordenador de 8 bits.

A medida que añadía más gráficos y la historia y el juego se volvían más complejos, la memoria del pequeño Spectrum de 48K se hacía cada vez más incapaz de guardar todo lo que yo necesitaba. Y fue aquí cuando tuve una conversación con Mr. Rancio y la posibilidad de que me creara música para el chip AY. Recuerdo que quería al menos dos composiciones, una para el juego y otra para el menú principal. Sí, sería una aventura poco convencional, con música para el chip AY y menú principal.

En esos momentos ya estaba bien claro que los 48K del Spectrum estaban cubiertos, así que tenía dos alternativas: reducir las pretensiones del juego, anulando la posibilidad de que tuviera música para el chip AY y otras ideas que me revoloteaban por la mente, o dar el salto a los 128K. Tras otra conversación con Mr. Rancio, me quedó claro que debía escoger la segunda opción. Todo quedó decidido en una tarde. Ahora era posible meter la música que quería y muchos más gráficos, definir una fuente nueva de 42 columnas, un inventario «visual», más texto, etc. Tras esta decisión vino mi principal escollo. Y es que el ZX Basic de Boriel no está aún preparado para los 128K. De manera que algunas tareas, como el cambio entre bancos de memoria para usar los 128K, «paginando» entre ellos, o el uso del chip AY, debería hacerse en ensamblador.

Donum_imageonline-co-threshold-7980808

Dicho y hecho, a remangarse y a repasar a fondo el ensamblador y la arquitectura del Spectrum, algo que quería evitar en un principio con el uso del ZX Basic. Y ya metidos en faena, ¿por qué no optimizar aún más algunas rutinas y partes del programa, y pasarlas de ZX Basic a ensamblador? Era el momento perfecto, y así lo hice. Esto ayudó a que las partes en las que se requiere más velocidad, como podía ser el dibujado dinámico de las localidades, mejorara en velocidad.

Donum_BosqueA medida que avanzaba el desarrollo del juego, la historia iba también evolucionando (sí, aún más), o mejor dicho, mejorando. Así que era necesario crear más fases, más objetos, más contenido, más textos y, por supuesto, un final de la historia digno de todo aquello. La introducción de más personajes y distintos tipos de muerte, por ejemplo, hacía que los gráficos crecieran continuamente, ya que son de un tamaño considerable, algunos a pantalla completa.

Por otro lado, la música para el juego que ya tenía creada Mr. Rancio, dos composiciones magníficas, no tenía una duración precisamente pequeña, ya que una de las cosas que tuvimos claro desde un principio es que no debía de hacerse monótona, animando al usuario a quitarla en mitad de una partida. Todo lo contrario, la música debía ayudar al jugador, sumergiéndolo en la historia y dándole pistas de la situación en la que se encuentra, algo que fue posible gracias a la reproducción «dinámica» de la misma y que se adapta a las circunstancias del juego.

A estas alturas ya había pasado más de un año y sabía que el proyecto no tenía nada que ver con el inicial en cuanto a historia, tiempo de desarrollo y pretensiones. Fue en este punto, si no recuerdo mal, cuando The Dream Box pasó a llamarse Donum.

Parte del material que iba creando se lo pasaba a Mr. Rancio, quien en un momento dado decidió conmigo que debería existir una música distinta para cada una de las fases. Llegado a este punto, los 128K del Spectrum se quedaban pequeños, por lo que decidí utilizar algún algoritmo de compresión. Fue aquí cuando descubrí ZX0, del conocido programador Einar Saukas, una pequeña maravilla fácil de usar y rápida, que permitió que el juego fuera lo que finalmente es.

Para rizar el rizo, y dada la importancia histórica que las ficciones interactivas tienen en el Reino Unido, decidí publicar también Donum en el idioma de Shakespeare. Lo cual fue todo un acierto, ya que abrió esta aventura a, literalmente, el resto de Europa, siendo actualmente el número de jugadores extranjeros superior al de hispanohablantes. La traducción fue como se esperaba: lenta, tediosa y carente de toda creatividad.
Afortunadamente, contaba con mi experiencia como traductor y la posibilidad de que los textos fueran revisados por un anglosajón nativo, a quien por suerte le di poco trabajo. Aun así, la participación de Mark R. Jones, nada menos que un ex grafista de la mítica Ocean Software, fue el punto de calidad que necesitaba la versión en inglés de Donum. A Mark ya lo conocía, pues pude contar con él para que escribiera el prólogo de mi segundo libro, ZX Spectrum: Un recorrido visual, volumen 2.

Llegamos al testeo

Como todo juego que se precie, Donum sufrió una fase de testeo bastante rigurosa basada en plantillas en formato Excel con una serie de tareas a realizar y cuestiones y observaciones a rellenar. El testeo aportó muchísimas mejoras al juego, cosa que no esperaba en absoluto, pues en principio su objetivo no iba mucho más allá de detectar bugs.

Estructura interna del Templo
Estructura interna del Templo

Curiosamente, apenas hubo bugs, pero sí una larga serie de propuestas de mejora que agradezco enormemente a los testers involucrados, Dwalin, SFH, Carlos Pérezgrín y el propio Mr. Rancio. Gracias a esas mejoras el juego ganó muchísimo en calidad, profundidad, jugabilidad y, por qué no decirlo, facilidad, ya que los continuos testeos realizados por mí durante el desarrollo habían aumentado su dificultad a niveles muy elevados, que yo era incapaz de percibir, lo que hubiera sido un hándicap importante para los futuros jugadores.

Añadir que, para acelerar la publicación del juego, decidí realizar en paralelo la fase de testeo y la traducción de los textos al inglés. Tengo que confesar que fue un gran error que no aconsejo a nadie, pues las mejoras propuestas (algunas de ellas con cambios importantes en la resolución de ciertos puzles) hacían que algunos textos tuvieran que modificarse, siendo necesario por tanto volver a traducirlos y revisarlos.

El artwork

Un juego en el que yo estaba dando lo máximo de mí a nivel técnico y Mr. Rancio dándolo todo a nivel musical, se merecía un apartado visual con ilustraciones dignas. Buscando la forma más rápida de tener una ilustración de calidad para la portada, me encontré con una de las primeras inteligencias artificiales (IA) destinadas a realizar gráficos, que por aquel entonces ya estaban llamando bastante la atención. Me refiero VQGAN+CLIP. Con esta IA, ahora ya obsoleta, se realizó la portada de Donum, donde se presenta a la «guddom» Simbion. También se utilizó VQGAN+CLIP para realizar la ilustración de Ignitus. Ambas fueron mejoradas por otras IA y retocadas con PhotoShop.

Donum_Sala-1
Donum_Templo-2
Donum_Sala-2

Más adelante, y sobre todo para el Artwork que se incluye en el libreto, utilicé otras IA de última generación como Stable Diffusion o Dalle-2, algo que sin duda me ha facilitado mucho la creación de ilustraciones de calidad, dándole una dimensión extra al juego y a la historia.

Donum se presentó en un directo de YouTube el día 1 de noviembre de 2022, en el canal El Spectrumero Javi Ortiz. Tras ese día, la aceptación fue sorprendentemente buena en cuanto a compras y descargas, sobre todo por personas de habla no hispana. Sobra decir a estas alturas que las aventuras de texto siempre han tenido más calado en países como el Reino Unido, pero no está nada mal la difusión que Donum ha tenido en países como España o Portugal.

Donum no es una aventura de texto típica, a la vieja usanza, salvo quizás su parte final. Es más bien un rompecabezas, un puzle en sí mismo, donde impera más saber moverse y orientarse que todo lo demás, tal y como la «guddom» Calator nos indica en la propia guía del juego. Y sí, es vital hacerse un mapa en cada noche, al menos a partir de la Noche 3, leer las instrucciones del juego, entender la simbología de las criaturas que reinan este mundo y prestar mucha atención a la guía del luego. Sin esto, el juego puede convertirse en un intento sin sentido de avance a base de suerte, lo que frustraría a cualquier jugador, dando además la sensación errónea de estar ante un juego donde todo ocurre de forma aleatoria, sin cierto sentido y sin previo aviso.

Estoy convencido que la historia y la forma en que se desarrolla gustará a muchos. Os animo a todos a probarlo. Está lleno de detalles a nivel argumental, gráfico, sonoro y técnico.

Donum está disponible en https://bitfans.itch.io/donum, en inglés y español. Existe una versión de pago y una versión gratuita de demostración. Pueden seguirse los proyectos del autor en Twitter: https://twitter.com/Bit_fans

  • El comienzo del desarrollo de Donum, cuyo significado en latín es «regalo», se remonta a una tarde de invierno, mientras leía un artículo sobre laberintos y su resolución.
  • La introducción del juego es probablemente una de las más extensas que existen en ZX Spectrum, con algo más de cuatro minutos.
  • Los textos extraídos del libro de Simbion, que aparecen tras la introducción del juego, dejan entrever una parte importante del trasfondo del juego y la historia. Conforme el jugador avance en el juego, se entenderán mejor estos textos.
  • El motivo por el cual el templo de Donum no deja de ser un cubo de 3x3x3, es su origen en la película Cube.
    Donum es un juego cuyo desarrollo ha abarcado unos dos años aproximadamente.
  • Todos los gráficos del juego, algunos basados en imágenes reales o generadas por IA, están realizados a mano en ZX Paintbrush.
  • Toda la música del juego está escrita en Vortex Tracker 3.
  • El núcleo de Donum está escrito principalmente en ZX Basic de Boriel, rodeado por un gran número de rutinas, escritas en ensamblador, encargadas de la gestión de la música, los gráficos y la memoria.
  • El jugador que termine el juego, entenderá algunos pequeños detalles que aparecen en la introducción y que hasta entonces posiblemente hayan pasado desapercibidos.

Donum_Libreto-Artwork-1

Tranquilino Rodriguez

Nació viejo hace ya más de medio siglo. Desde entonces solo ha podido ir cuesta abajo y sin frenos. Prueba de ello es que dedica parte de su tiempo a dirigir y presentar un pódcast en Twitch llamado Increíble Pero Incierto. Como es un animal sediento de éxito y fortuna, está tratando de ofrecer a las masas su visión del clásico de Aventuras AD #LaAventuraCasiOriginal, una aventura de texto que, sin duda, le reportará pingues beneficios. Mastodon

Publicaciones relacionadas

Mira también
Cerrar
Botón volver arriba