MC Toolkit

Poradniki / Budowanie i zasoby

Piksel mapy to jeden bajt, a dwa z jego bitów to jasność

61 kolorów bazowych × 4 odcienie = 244 kolory z tablicy o rozmiarze 16 384 bajtów. Tylko jeden z czterech odcieni to pełna wartość koloru; pozostałe trzy są przyciemnione do 86%, 71% i 53%.

Każda wypełniona mapa w Minecraft ma ten sam rozmiar na dysku: tablica colors bajtów o dokładnie 16 384 wpisach, czyli 128 × 128. Dotyczy to zarówno mapy w wielkości 0, obejmującej 128 bloków, jak i mapy w wielkości 4, obejmującej 2 048 bloków — liczba pikseli nigdy się nie zmienia. Wszystko inne w sztuce mapowej wynika z tego jednego faktu.

Bajt dzieli się na dwie części

Każdy z tych 16 384 bajtów nie jest kolorem. To kolor bazowy i odcień spakowane razem:

baseColorId = colorId >> 2      // 0–63
shadeIndex  = colorId & 3       // 0–3

Zatem dwa najniższe bity to jasność, a reszta mówi, na jaki blok patrzysz. Przy 61 zdefiniowanych kolorach bazowych (id 0 to przezroczysty/nieodkryty slot) najwyższy bajt, jaki przechowuje prawdziwa mapa, to 61 × 4 + 3 = 247.

61 × 4 = 244 odrębne kolory, czyli cała paleta dostępna dla sztuki mapowej. Nie 61 i nie 256.

Tylko jeden odcień to pełna wartość koloru

Cztery mnożniki nie są równomiernie rozłożone, a jeden z nich wynosi 1,0:

indeks odcieniamnożnikjako procent
0180 / 25570,6%
1220 / 25586,3%
2255 / 255100%
3135 / 25552,9%

Odcień 2 to własne RGB koloru mapy, nieskalowane — stała wartość dla danego id koloru, nie pobierana z tekstury bloku. Pozostałe trzy to jego ciemniejsze wersje, a najciemniejszy — odcień 3 — ma zaledwie nieco ponad połowę jasności.

Właśnie dlatego schodkowa sztuka mapowa wygląda tak inaczej niż płaska. Płaska budowla daje tylko normalny odcień (86%), więc płaska mapa ma do dyspozycji 61 kolorów. Zmienianie wysokości odblokowuje jaśniejsze i ciemniejsze odcienie każdego bloku i przenosi cię do 183. Paleta nie staje się szeroka — nie zyskujesz nowych barw — staje się trzykrotnie głębsza pod względem jasności, a to właśnie jest potrzebne do ditheringu. Czwarty odcień (53%) nigdy nie powstaje z bloków: istnieje w formacie bajtowym i korzysta z niego wyłącznie edytowany plik mapy.

Zauważ też, że kolejność odcieni nie jest monotoniczna: indeks 3 jest najciemniejszy, a nie najjaśniejszy. Sortowanie po indeksie w oczekiwaniu gradientu daje 71%, 86%, 100%, 53%.

Wielkości mnoży powierzchnię, nigdy rozdzielczość

Pole scale przyjmuje wartości 0–4, a teren, który obejmuje, ma 128 × 2^scale bloków na bok:

wielkościobejmowane blokijeden piksel mapy to
0128 × 1281 blok
1256 × 2562 × 2 bloki
2512 × 5124 × 4 bloki
31 024 × 1 0248 × 8 bloków
42 048 × 2 04816 × 16 bloków — dokładnie jeden chunk

Mapa w wielkości 4 obejmuje 256 razy większy obszar niż mapa w wielkości 0, używając tych samych 16 384 bajtów. To jest cały powód, dla którego sztukę mapową trzeba budować w wielkości 0: przy każdym innym przybliżeniu jeden piksel to średnia kilku bloków, a obraz, który starannie ułożyłeś, zostaje przeliczony i zatarty.

Wiersz dla wielkości 4 warto zapamiętać z innego powodu — jeden piksel to dokładnie jeden chunk, co czyni w pełni przybliżoną mapę użyteczną siatką chunków.

Co to oznacza dla uszkodzonego pliku

Jeśli plik mapy (data/minecraft/maps/<id>.dat w folderze świata) ma tablicę colors, która nie ma 16 384 bajtów, to nie jest mapa z brakującymi pikselami: gra nadal wczytuje mapę, ale wyrzuca piksele i pokazuje ją jako pustą. Nie istnieje forma o częściowej długości. Tablica zawsze ma pełny rozmiar, a nieodkryte obszary są przechowywane jako id koloru 0, a nie pomijane.

Ekstraktor mapy do PNG →

Więcej poradników

Zobacz wszystkie →