Minecraft dans sa forme la plus primitive vient d'atterrir sur du matériel dont Notch n'avait même pas rêvé en 2009. Le projet rdgeneric, publié sur GitHub par le développeur pragyaangaur, recrée la version rd-132211, la première version publique de Minecraft du 13 mai 2009, sous la forme d'un unique fichier source en C qui se compile et fonctionne sur six plateformes totalement différentes, du terminal texte jusqu'au processeur x86 nu sans aucun système d'exploitation.
Un seul noyau de jeu, six plateformes
L'auteur du projet le décrit comme une implémentation inspirée de doomgeneric, une approche bien connue consistant à écrire le moteur d'un jeu sans aucune dépendance au système d'exploitation et sans allocation dynamique de mémoire. Grâce à ça, le même code du fichier src/rd.c suffit à compiler pour un framebuffer et une gestion du clavier spécifiques, et il fonctionne quasiment partout.
- Terminal : rendu en caractères bloc, avec gestion de la souris
- Telnet : un monde commun, partagé entre plusieurs connexions simultanées
- Navigateur : un module WebAssembly de 20 Ko, fonctionnant entièrement hors ligne
- Fichier PDF : moteur JavaScript lancé dans Chrome via 120 champs de texte
- Processeur x86 nu : mode VGA 13h, gestion PS/2, démarrage sans système d'exploitation
- Microcontrôleurs Raspberry Pi Pico, Pico 2 et Game Boy Advance (compilation confirmée, tests matériels non effectués)
Le gameplay repose sur le raycasting, un rayon par pixel, comme dans le célèbre Minecraft 4K, la version minimaliste du jeu de 2010 écrite pour le concours Java4K. Le monde se génère de façon procédurale, et la physique ainsi que l'éclairage reproduisent une petite fraction des mécaniques connues du Minecraft Java Edition actuel.
À quel point Minecraft peut-il être petit
Le code compilé de rdgeneric pèse entre 9 et 14 Ko, selon l'architecture visée. La version fonctionnant dans un fichier PDF utilise l'outil wasm2js, qui convertit le module WebAssembly en JavaScript pur, compréhensible par le moteur du navigateur qui affiche le document. Toutes les plateformes exécutent la même physique : le monde est décrit par des nombres entiers, la position du joueur par des nombres à virgule flottante, ce qui garantit un comportement identique du jeu, qu'on le lance sur un ordinateur portable récent ou sur un ordinateur émulé du début des années 90.
Le projet est publié sous licence MIT, ce qui laisse une liberté totale de modification et de développement du code par la communauté. Le README du dépôt contient un GIF de démonstration montrant la même balade dans le même monde, simultanément dans le navigateur, le terminal, le PDF et sur x86 nu, et la version web fonctionnelle peut être lancée directement depuis le GitHub Pages de l'auteur.
Pourquoi c'est important pour les joueurs
Pour la communauté Minecraft, habituée aux mises à jour qui ajoutent de nouveaux biomes, mobs et mécaniques dans les versions successives du jeu, rdgeneric est un rappel de ce à quoi ressemblait le point de départ : un jeu sans crafting, sans mobs et avec seulement une poignée de blocs, où il ne s'agissait que de poser et de retirer six types de blocs dans un monde généré de façon procédurale. C'est justement cette version, rd-132211, qui circule sur le net comme démo jouable du concept originel de Notch, avant que Minecraft n'acquière un système de crafting et des milliers d'heures de contenu qui attirent aujourd'hui de nouveaux joueurs, y compris sur consoles et appareils mobiles.
Les projets du type de rdgeneric arrivent régulièrement en tête des classements de popularité sur GitHub et Hacker News, justement parce qu'ils allient la nostalgie de la toute première version du jeu à une pure curiosité d'ingénieur : jusqu'où peut-on exploiter un seul fichier en C pour le faire tourner sur du matériel dont la puissance se compte en mégahertz et non en gigahertz. Pour les développeurs intéressés par les ordinateurs rétro et les systèmes embarqués, c'est un exemple concret et fonctionnel de la façon d'écrire du code portable entre des plateformes radicalement différentes, sans une seule ligne de condition spécifique à un système d'exploitation.