Minecraft en su forma más primitiva acaba de llegar a un hardware con el que Notch, en 2009, ni siquiera soñaba. El proyecto rdgeneric, publicado en GitHub por el programador pragyaangaur, recrea la versión rd-132211 (la primera versión pública de Minecraft del 13 de mayo de 2009) como un único archivo fuente en lenguaje C que se compila y funciona en seis plataformas completamente distintas, desde una terminal de texto hasta un procesador x86 desnudo sin ningún sistema operativo.

Un solo núcleo de juego, seis plataformas

El autor del proyecto lo describe como una implementación inspirada en doomgeneric, un enfoque conocido que consiste en escribir el motor del juego sin dependencias del sistema operativo y sin asignación dinámica de memoria. Gracias a esto, el mismo código del archivo src/rd.c solo necesita compilarse para un framebuffer concreto y un manejo de teclado específico para funcionar prácticamente en cualquier lado.

  • Terminal: renderizado con caracteres de bloque, con soporte de mouse
  • Telnet: un mundo compartido para varias conexiones simultáneas
  • Navegador: un módulo WebAssembly de 20 KB que funciona completamente sin conexión
  • Archivo PDF: motor en JavaScript ejecutado en Chrome mediante 120 campos de texto
  • Procesador x86 desnudo: modo VGA 13h, soporte PS/2, arranque sin sistema operativo
  • Microcontroladores Raspberry Pi Pico, Pico 2 y Game Boy Advance (compilación confirmada, pruebas en hardware real no realizadas)

La jugabilidad se basa en raycasting (un rayo por píxel), de forma similar a Minecraft 4K, la versión minimalista del juego de 2010 escrita para el concurso Java4K. El mundo se genera de manera procedural, y la física y la iluminación reproducen una pequeña parte de las mecánicas conocidas del actual Minecraft Java Edition.

Qué tan pequeño puede ser Minecraft

El código compilado de rdgeneric ocupa entre 9 y 14 KB, dependiendo de la arquitectura de destino. La versión que funciona dentro del archivo PDF usa la herramienta wasm2js, que convierte el módulo WebAssembly en JavaScript puro, entendible por el motor del navegador que muestra el documento. Todas las plataformas ejecutan exactamente la misma física (el mundo se describe con números enteros, y la posición del jugador con números de punto flotante), lo que garantiza un comportamiento idéntico del juego sin importar si lo ejecutas en una laptop nueva o en una computadora emulada de principios de los años 90.

El proyecto se publicó bajo licencia MIT, lo que da total libertad para modificarlo y seguir desarrollándolo con la comunidad. El README del repositorio incluye un GIF de demostración que muestra el mismo recorrido por el mismo mundo simultáneamente en el navegador, la terminal, el PDF y en x86 desnudo, y la versión web funcional puede ejecutarse directamente desde el GitHub Pages del autor.

Por qué esto importa para los jugadores

Para la comunidad de Minecraft, acostumbrada a actualizaciones que agregan nuevos biomas, mobs y mecánicas en las versiones del juego, rdgeneric es un recordatorio de cómo era el punto de partida: un juego sin crafting, sin minas y sin la mayoría de los bloques, donde lo único que importaba era colocar y quitar seis tipos de bloques en un mundo generado proceduralmente. Es precisamente esta versión, rd-132211, la que circula en internet como demo jugable del concepto original de Notch, antes de que Minecraft incorporara el sistema de crafting y miles de horas de contenido que hoy atraen a nuevos jugadores, incluso en consolas y dispositivos móviles.

Proyectos como rdgeneric suelen llegar a lo más alto de las listas de popularidad en GitHub y Hacker News precisamente porque combinan nostalgia por la primera versión del juego con pura curiosidad de ingeniería: cuánto se puede exprimir de un solo archivo en C para hacerlo funcionar en hardware cuya potencia se mide en megahercios, no en gigahercios. Para programadores interesados en retrocomputación y sistemas embebidos, es un ejemplo concreto y funcional de cómo escribir código portable entre plataformas extremadamente distintas sin una sola línea de condicionales específicos del sistema operativo.

Fuentes