Mojang udostępnił 22 września pierwszy snapshot aktualizacji Minecraft 26.4 dla Java Edition, oznaczony w launcherze jako 26.4-snapshot-1. Pojawił się tydzień po premierze wersji 26.3 i otwiera testy kolejnej aktualizacji. Najważniejsza zmiana dotyczy grafiki: w ustawieniu „API graficzne” (Graphics API) wariant „Domyślne” (Default) działa teraz tak samo jak „Preferuj Vulkan” (Prefer Vulkan), więc Vulkan staje się domyślnym sposobem renderowania gry. Poza tym snapshot zmienia protokół sieciowy i opcje serwera, poprawia generowanie świata i naprawia 29 błędów.

Vulkan zastępuje OpenGL w ustawieniu domyślnym

Vulkan trafił do testów w kwietniowym snapshocie 26.2-snapshot-1. Mojang nazwał to dużym krokiem w stronę przeniesienia oprawy Vibrant Visuals do Javy i przypomniał, że gra ma docelowo przejść z OpenGL na Vulkan. W tamtym snapshocie „Domyślne” również oznaczało Vulkan, ale w pełnej wersji 26.2, wydanej 16 czerwca, działało jak „Preferuj OpenGL”. Nowy renderer był wtedy dostępny jako opcja „Preferuj Vulkan (eksperymentalne)”, którą trzeba było wybrać samodzielnie, a Mojang ostrzegał, że na niektórych systemach może ona obniżyć wydajność albo stabilność. Wersja 26.3 z 15 września naprawiła kilka błędów Vulkana, m.in. niską wydajność na kartach AMD i Intel Arc oraz rozrywanie obrazu w trybie pełnoekranowym mimo włączonej synchronizacji pionowej (VSync).

Vulkan nie działa na każdym sprzęcie. W notce do wersji 26.2 Mojang podał, że renderer wymaga Vulkana 1.2 z funkcjami dynamic rendering i push descriptors, przy czym ten próg może się z czasem zmienić w obie strony. Na starszych kartach graficznych i sterownikach zapasowym rendererem pozostaje OpenGL, a przy ustawieniu preferującym Vulkan gra sama przechodzi na OpenGL, jeśli Vulkan nie zadziała. Pod Vulkanem gra wybiera w pierwszej kolejności kartę dedykowaną, a nie zintegrowaną, co jest zmianą względem OpenGL, a na macOS polecenia Vulkana tłumaczy na Metal biblioteka MoltenVK.

Inaczej wygląda też reakcja na awarię. Od wersji 26.2 gra, która uległa awarii przy uruchamianiu, sama zmieniała ustawienie z „Preferuj Vulkan (eksperymentalne)” na „Domyślne”, a z „Domyślne” na „Preferuj OpenGL”. W nowym snapshocie tej automatycznej zmiany już nie ma, więc po awarii przy starcie API graficzne trzeba przełączyć samodzielnie.

Jaskinie siarkowe także pod starymi chunkami

Przy aktualizacji światów sprzed Caves and Cliffs (1.18) gra dobudowuje teren pod starymi fragmentami mapy (chunkami). Od tego snapshotu powstają tam także jaskinie siarkowe (Sulfur Caves). To podziemny biom z czerwcowej aktualizacji Chaos Cubed (26.2), zbudowany z siarki i cynobru, w którym pojawiają się kostki siarki (Sulfur Cube). Do paczek danych doszły przy tym dwa tagi biomów: #generated_in_below_zero_retrogen wskazuje biomy generowane pod światami sprzed Caves and Cliffs, a #is_cave to nowy zbiorczy tag biomów jaskiniowych.

Snapshot zmienia także zasady stawiania grzybów. Muchomor (Red Mushroom) i borowik (Brown Mushroom) można teraz postawić na każdym bloku z pełną górną ścianą, niezależnie od oświetlenia, tak jak w Bedrock Edition (MC-311773). Rozrastać się będą jednak nadal tylko przy jasności poniżej 13 albo na podłożu, które znosi wymagania dotyczące światła.

Wśród 29 naprawionych błędów są też takie, które widać w zwykłej rozgrywce. Postać nie podskakuje już sama, gdy w wodzie napiera na blok (MC-8959), a podobne samoczynne skoki usunięto u mobów spychanych na krawędź wody lub lawy albo wpadających do wody z pewnej wysokości. Ramki na przedmioty (Item Frame) zdjęte z sufitu wypadają teraz pod blokiem, a nie na nim, podróż do Endu w trybie widza (Spectator Mode) nie odbudowuje już platformy z obsydianu, a dźwięki wagoników (Minecart) nie są zniekształcone. Zniknęły też przedmioty-widma, które mogły powstać przy powielaniu rzeczy kółkiem myszy w trybie kreatywnym (Creative Mode).

Nowe pakiety i opcje serwera

Sporą część notki zajmują zmiany w protokole sieciowym. Nowy pakiet minecraft:mod_list ma informować serwer o modach zainstalowanych w kliencie, aby ułatwić diagnozowanie problemów. Klient vanilla nie zna żadnych modów, więc na początku fazy konfiguracji wysyła pusty pakiet, a wypełnianie go należy do zewnętrznych platform modyfikacji.

Zmienił się też pakiet minecraft:intention, który przy łączeniu przekazuje serwerowi adres użyty do połączenia. Pole adresu może teraz zawierać dodatkowe parametry zapisane podobnie jak zapytanie w adresie URL: po domenie stawia się znak zapytania, a pary klucz=wartość rozdziela się znakiem &, np. example.com?key1=value2&key2. Puste wartości można pominąć razem ze znakiem równości, klucze zaczynające się od podkreślnika są zarezerwowane dla samej gry, a limit długości pola wzrósł do 1024 znaków. Parametry da się wpisać w każdym polu „Adres serwera” (Server Address) na liście serwerów, a adres w postaci id@host gra odczytuje jako host?_id=id.

Przy serwerach korzystających z rekordów DNS SRV pole zawiera teraz obie domeny. Jeśli się różnią, główną jest domena wskazana przez rekord, pierwotna trafia do parametru _o, a port w pakiecie odpowiada temu z rekordu. Mojang zaznacza, że pakiet nie jest szyfrowany, więc tych parametrów nie należy wykorzystywać do niczego, co wiąże się z bezpieczeństwem. Pakiet minecraft:transfer, którym serwer przekierowuje klienta na inny serwer, dostał z kolei pole properties z parametrami dopisywanymi do adresu wysyłanego serwerowi docelowemu.

W pliku server.properties pojawiły się trzy nowe opcje. Opcja allowed-connection-ids przyjmuje listę identyfikatorów rozdzielonych przecinkami: jeśli lista nie jest pusta, serwer porównuje ją z parametrem _id i odrzuca połączenia bez pasującej wartości, zarówno przy logowaniu, jak i przy zapytaniu o status. Bez właściwego _id w adresie nie widać więc nawet statusu serwera. Opcja status-contact-details dołącza do odpowiedzi statusowej czytelną informację o kontakcie z osobami prowadzącymi serwer, przydatną zwłaszcza wtedy, gdy serwer nie ma strony internetowej. Z kolei enable-legacy-status pozwala wyłączyć obsługę starego protokołu statusu i pingu sprzed wersji 1.7, ale domyślnie ma wartość true, więc dotychczasowe działanie się nie zmienia.

Zmiany w paczkach danych i zasobów

Paczki danych (Data Pack) mają teraz wersję 122.0, a paczki zasobów (Resource Pack) wersję 98.0. Polecenie /fillbiome wypełnia biomy z dokładnością do pojedynczego bloku, a konwersja liczb zmiennoprzecinkowych na całkowite w NBT zawsze zaokrągla w dół do najbliższej poprawnej wartości (wcześniej polecenie /data przy rzutowaniu na typ long obcinało część ułamkową). Generator pni straight_trunk_placer dostał opcjonalne pole trunk_width, które określa szerokość pnia wokół jego środka i domyślnie wynosi 1. Z ustawień szumu (noise settings) usunięto pole default_block, bo podstawowym blokiem jest teraz zawsze powietrze, a każdy inny trzeba zdefiniować regułą materiałów (Material Rule). Modyfikator rozmieszczenia cuboid podaje odtąd rzeczywisty rozmiar, więc xz_size równe 2 oznacza obszar 2x2, a nie 3x3.

W paczkach zasobów uproszczono shadery przezroczystości niezależnej od kolejności (Order-Independent Transparency). Obliczenia oparte na falkach zastąpiło sumowanie w przedziałach głębokości, co według Mojanga nieco poprawia wydajność przynajmniej na części urządzeń i średnio zmniejsza problemy z precyzją obliczeń zmiennoprzecinkowych. Przy okazji zmieniły się nazwy kilku definicji shaderów, np. OIT_COEFF_COUNT zastąpiono OIT_NUMBER_OF_DEPTH_BINS.

Jak zainstalować snapshot

Snapshot jest dostępny tylko w Java Edition. Aby go zainstalować, trzeba otworzyć Minecraft Launcher i włączyć snapshoty w zakładce instalacji (Installations). Mojang przypomina, że wersje testowe mogą uszkodzić świat, dlatego lepiej zrobić kopię zapasową albo uruchamiać je w innym folderze niż główne światy. Do pobrania jest też wieloplatformowy plik serwera (server jar), a znalezione błędy można zgłaszać w oficjalnym systemie zgłoszeń Mojanga (Minecraft issue tracker).

Źródła