Minecraft w swojej najbardziej pierwotnej postaci właśnie trafił na sprzęt, o którym Notch w 2009 roku nawet nie śnił. Projekt rdgeneric, opublikowany na GitHubie przez programistę pragyaangaur, odtwarza wersję rd-132211 - pierwsze publiczne wydanie Minecrafta z 13 maja 2009 roku - jako pojedynczy plik źródłowy w języku C, który kompiluje się i działa na sześciu zupełnie różnych platformach, od terminala tekstowego po goły procesor x86 bez jakiegokolwiek systemu operacyjnego.
Jedno jądro gry, sześć platform
Autor projektu opisuje go jako implementację inspirowaną doomgeneric - znanym podejściem polegającym na napisaniu silnika gry bez żadnych zależności od systemu operacyjnego i bez dynamicznej alokacji pamięci. Dzięki temu ten sam kod z pliku src/rd.c wystarczy skompilować pod konkretny framebuffer i obsługę klawiatury, żeby działał praktycznie wszędzie.
- Terminal - renderowanie znakami blokowymi, z obsługą myszy
- Telnet - wspólny, współdzielony świat dla wielu połączeń jednocześnie
- Przeglądarka - moduł WebAssembly o wadze 20 KB, działający w pełni offline
- Plik PDF - silnik JavaScript uruchamiany w Chrome za pomocą 120 pól tekstowych
- Goły procesor x86 - tryb VGA 13h, obsługa PS/2, start bez systemu operacyjnego
- Mikrokontrolery Raspberry Pi Pico, Pico 2 i Game Boy Advance (kompilacja potwierdzona, testy sprzętowe nie)
Rozgrywka bazuje na raycastingu - jednym promieniu na piksel - podobnie jak w słynnym Minecraft 4K, minimalistycznej wersji gry z 2010 roku napisanej na konkurs Java4K. Świat generuje się proceduralnie, a fizyka i oświetlenie odwzorowują niewielki fragment mechanik znanych z dzisiejszego Minecraft Java Edition.
Jak mały może być Minecraft
Skompilowany kod rdgeneric zajmuje od 9 do 14 KB, w zależności od docelowej architektury. Wersja działająca w pliku PDF korzysta z narzędzia wasm2js, które konwertuje moduł WebAssembly do czystego JavaScriptu zrozumiałego dla silnika przeglądarki wyświetlającego dokument. Wszystkie platformy wykonują identyczną fizykę - świat opisują liczby całkowite, a pozycję gracza liczby zmiennoprzecinkowe - co zapewnia zgodność zachowania gry niezależnie od tego, czy uruchamiamy ją na nowym laptopie, czy na emulowanym komputerze z początku lat 90.
Projekt udostępniono na licencji MIT, co oznacza pełną swobodę modyfikacji i dalszego rozwijania kodu przez społeczność. README repozytorium zawiera demonstracyjny GIF pokazujący identyczną przechadzkę po tym samym świecie równocześnie w przeglądarce, terminalu, PDF-ie i na gołym x86, a działającą wersję webową można odpalić bezpośrednio z GitHub Pages autora.
Dlaczego to ma znaczenie dla graczy
Dla społeczności Minecrafta, przyzwyczajonej do aktualizacji dodających nowe biomy, moby i mechaniki w kolejnych wersjach gry, rdgeneric jest przypomnieniem, jak wyglądał punkt wyjścia - gra bez craftingu, moich i większości bloków, w której liczyło się tylko stawianie i usuwanie sześciu typów klocków w proceduralnie generowanym świecie. To właśnie ta wersja, rd-132211, krąży w sieci jako playable demo pierwotnej koncepcji Notcha, zanim Minecraft zyskał system craftingu i tysiące godzin zawartości, które dziś przyciągają do gry nowych odbiorców, w tym na konsolach i urządzeniach mobilnych.
Projekty typu rdgeneric regularnie trafiają na szczyty list popularności na GitHubie i Hacker News właśnie dlatego, że łączą nostalgię za pierwszą wersją gry z czystą inżynierską ciekawością: ile da się wycisnąć z jednego pliku w C, żeby uruchomić go na sprzęcie, którego moc liczy się w megahercach, a nie gigahercach. Dla programistów zainteresowanych retrokomputerami i embedded systemami to konkretny, działający przykład, jak pisać kod przenośny między skrajnie różnymi platformami bez jednej linijki warunków specyficznych dla systemu operacyjnego.
Komentarze
Komentarze działają w zewnętrznym serwisie Disqus, który zapisuje pliki cookie (polityka prywatności Disqusa). Wczytamy komentarze po kliknięciu przycisku poniżej.
Nie udało się wczytać Disqusa. Jeśli masz adblocka lub inną blokadę, wyłącz blokowanie na minecraft.pl i spróbuj ponownie.