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.

Fontes