O Minecraft em sua forma mais primitiva acabou de chegar a um hardware que nem o Notch, em 2009, sonhava em ver rodando o jogo. O projeto rdgeneric, publicado no GitHub pelo programador pragyaangaur, recria a versão rd-132211, a primeira versão pública do Minecraft, lançada em 13 de maio de 2009, como um único arquivo fonte em linguagem C que compila e roda em seis plataformas completamente diferentes, do terminal de texto a um processador x86 puro sem absolutamente nenhum sistema operacional.
Um núcleo de jogo só, seis plataformas
O autor do projeto o descreve como uma implementação inspirada no doomgeneric, uma abordagem conhecida que consiste em escrever o motor do jogo sem nenhuma dependência de sistema operacional e sem alocação dinâmica de memória. Com isso, o mesmo código do arquivo src/rd.c basta ser compilado para o framebuffer e o suporte de teclado específicos de cada plataforma para rodar em praticamente qualquer lugar.
- Terminal: renderização com caracteres de bloco, com suporte a mouse
- Telnet: um mundo compartilhado para várias conexões simultâneas
- Navegador: módulo WebAssembly de 20 KB, funcionando totalmente offline
- Arquivo PDF: motor em JavaScript executado no Chrome usando 120 campos de texto
- Processador x86 puro: modo VGA 13h, suporte a PS/2, inicialização sem sistema operacional
- Microcontroladores Raspberry Pi Pico, Pico 2 e Game Boy Advance (compilação confirmada, testes em hardware real não)
A jogabilidade é baseada em raycasting, um raio por pixel, parecido com o famoso Minecraft 4K, a versão minimalista do jogo de 2010 escrita para o concurso Java4K. O mundo é gerado proceduralmente, e a física e a iluminação reproduzem uma pequena fração das mecânicas conhecidas do atual Minecraft Java Edition.
O quão pequeno o Minecraft pode ser
O código compilado do rdgeneric ocupa entre 9 e 14 KB, dependendo da arquitetura de destino. A versão que roda dentro do arquivo PDF usa a ferramenta wasm2js, que converte o módulo WebAssembly em JavaScript puro, compreensível pelo motor do navegador que exibe o documento. Todas as plataformas executam a física de forma idêntica, o mundo é descrito por números inteiros e a posição do jogador por números de ponto flutuante, o que garante que o comportamento do jogo seja igual independentemente de rodar em um notebook novo ou em um computador emulado do início dos anos 90.
O projeto foi disponibilizado sob licença MIT, o que significa total liberdade para modificar e continuar desenvolvendo o código junto com a comunidade. O README do repositório traz um GIF demonstrativo mostrando a mesma caminhada pelo mesmo mundo simultaneamente no navegador, no terminal, no PDF e em um x86 puro, e a versão web funcional pode ser aberta diretamente pelo GitHub Pages do autor.
Por que isso importa para os jogadores
Para a comunidade de Minecraft, acostumada com atualizações que adicionam novos biomas, mobs e mecânicas nas versões seguintes do jogo, o rdgeneric é um lembrete de como era o ponto de partida: um jogo sem crafting, sem minérios e sem a maioria dos blocos, em que tudo o que importava era colocar e remover seis tipos de blocos em um mundo gerado proceduralmente. É justamente essa versão, a rd-132211, que circula pela internet como uma demo jogável do conceito original do Notch, antes de o Minecraft ganhar o sistema de crafting e milhares de horas de conteúdo, que hoje atraem novos jogadores, inclusive em consoles e dispositivos móveis.
Projetos do tipo rdgeneric regularmente chegam ao topo das listas de popularidade no GitHub e no Hacker News justamente porque combinam a nostalgia da primeira versão do jogo com pura curiosidade de engenharia: quanto é possível tirar de um único arquivo em C para fazê-lo rodar em um hardware cuja potência é medida em megahertz, não gigahertz. Para programadores interessados em retrocomputação e sistemas embarcados, é um exemplo concreto e funcional de como escrever código portável entre plataformas extremamente diferentes sem uma única linha de condicional específica de sistema operacional.