Por @Alvy — 26 de septiembre de 2023

Está creación de DotEye es tan intranscendente como impresionante, aunque lo curioso es que se le pueden encontrar multitud de aspectos fascinantes que van desde el diseño a las matemáticas o la informática y la programación para gestionar cantidades ingentes de datos. Y es que estando inspirada en la cuasi infinita y vastísima Biblioteca de Babel de Jorge Luis Borges y con Minecraft como «mundo base» no podría ser de otro modo.

La versión Minecraft de la Biblioteca almacena todas las posibles variaciones de las letras del alfabeto (mayúsculas) de 15 caracteres en libros de 16 páginas. Los diferentes volúmenes están en en grandes librerías a medida en las paredes de habitaciones que conectan unas con otras de un modo laberíntico pero no infinito. De este modo, hay un libro que contiene la página con «A», otro con «B», «C» y luego «AA», «AB», etcétera… Y así, habitación por habitación, libro por libro, página por página, hasta «ZZZZZZZZZZZZZZZ», incluyendo algunas consideradas interesantes con «ALEA JACTA EST» o «ÉRASE UNA VEZ».

El proyecto tiene muchas cuestiones curiosas, como por ejemplo las relativas a la arquitectura de las habitaciones, que forman una especie de bloque de 16×16×16 habitaciones con entradas, salidas y escaleras, que encaja con bloques adyacentes idénticos. En cuanto a la parte técnica se utiliza una versión personalizada de un servidor de Minecraft creado mediante ingeniería inversa al que se quitaron todas las funciones no esenciales; la idea era que eso además permitiera gestionar la enormidad de datos del proyecto.

Las cifras de la Biblioteca son impresionantes: según cuenta para almacenar todos los datos harían falta unos 80 PB, porque la lista de las páginas (350 billones) serían unos 350 PB y además hace falta información adicional. Parte del truco para hacerlo manejable es usar unas funciones matemáticas que evitan almacenar todos datos sino que los generan sobre la marcha, a partir de la posición del jugador (básicamente, sus coordenadas) en las habitaciones de la Biblioteca.

Dado que tener todos los libros ordenados alfabéticamente (A, B, C… AA, AB, AC…) sería realmente aburrido de cara a jugar a «descubrir cosas interesantes» hay que desordenarlos. Pero mezclar aleatoriamente los 350 billones de páginas no es trivial. Así que el truco es usar una función criptográfica que produce una secuencia pseudoaleatoria a partir del «número de orden» de dicha secuencia. Es algo así como que a partir de (1, 2, 3, 4, 5, 6, 7) se genera siempre (5, 4, 7, 1, 3, 2, 6). Esta función es curiosamente como las que emplea el algoritmo criptográfico RSA, en concreto uno llamado FF3 de la familia de cifrados con preservación de formato.

A todo esto se añaden virguerías como que en el servidor de Minecraft puede haber varios jugadores que se vean entre sí caminando por las habitaciones y examinando los libros, una función que permite buscar textos (y encontrar el lugar en el que está el libro con tu nombre, por ejemplo) y otras pequeñas maravillas. El proyecto entero es de código abierto y está en Github como Minecraft Library of Babel de donde se puede descargar para jugar, ver, aprender, modificar y mejorar.

Relacionado:

Compartir en Flipboard Publicar / Tuitear Publicar