MC Toolkit

가이드 / 건축 및 리소스

지도 픽셀은 1바이트이고, 그중 2비트는 밝기다

61가지 기본 색상 × 4가지 음영 = 16,384바이트 배열에서 나오는 244가지 색상. 네 가지 음영 중 색상의 온전한 값은 하나뿐이고, 나머지 셋은 86%, 71%, 53%로 어두워진 것이다.

마인크래프트의 모든 채워진 지도는 디스크에서 크기가 같다. 정확히 16,384개의 항목으로 이루어진 colors 바이트 배열이며, 이는 128 × 128이다. 128블록을 덮는 크기 0 지도든 2,048블록을 덮는 크기 4 지도든 마찬가지다. 픽셀 수는 절대 변하지 않는다. 지도 예술에 관한 나머지 모든 것은 이 한 가지 사실에서 따라 나온다.

바이트는 둘로 나뉜다

이 16,384개의 바이트 각각은 색상이 아니다. 기본 색상과 음영이 함께 압축된 것이다.

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

즉 하위 2비트는 밝기이고, 나머지는 어떤 블록을 보고 있는지를 나타낸다. 61가지 기본 색상이 정의되어 있으므로(id 0은 투명/미탐험 슬롯), 실제 지도가 담는 가장 높은 바이트는 61 × 4 + 3 = 247이다.

61 × 4 = 244가지 서로 다른 색상이며, 이것이 지도 예술에 쓸 수 있는 팔레트의 전부다. 61도, 256도 아니다.

온전한 값인 음영은 하나뿐이다

네 가지 배수는 균등하게 나뉘어 있지 않고, 그중 하나는 1.0이다.

음영 인덱스배수백분율
0180 / 25570.6%
1220 / 25586.3%
2255 / 255100%
3135 / 25552.9%

음영 2는 지도 색상 자체의 RGB로, 축소되지 않은 값이다. 색상 id마다 고정된 값이며 블록의 텍스처에서 추출한 것이 아니다. 나머지 셋은 그것의 어두운 버전이고, 가장 어두운 음영 3은 밝기의 절반을 겨우 넘는 수준이다.

계단식 지도 예술이 평면 지도 예술과 그렇게 달라 보이는 이유가 여기에 있다. 평면 건축물은 일반 음영(86%)만 만들어내므로, 평면 지도에서는 61가지 색상만 쓸 수 있다. 높이를 변화시키면 모든 블록의 더 밝고 더 어두운 음영이 열려 183가지가 된다. 팔레트가 넓어지는 것이 아니다. 새로운 색조가 생기지는 않는다. 값의 깊이가 세 배가 되는 것이고, 이것이 바로 디더링에 필요한 것이다. 네 번째 음영(53%)은 블록으로는 전혀 만들어지지 않는다. 바이트 형식에는 존재하며, 편집된 지도 파일만이 이것을 사용한다.

음영 순서가 단조롭지 않다는 점도 기억해 두자. 인덱스 3이 가장 어둡지, 가장 밝지 않다. 인덱스 순으로 정렬하며 그라데이션을 기대하면 71%, 86%, 100%, 53%가 나온다.

크기는 면적을 곱할 뿐, 해상도는 건드리지 않는다

scale 필드는 0–4 범위이고, 덮는 땅은 한 변이 128 × 2^scale 블록이다.

크기덮는 블록지도 픽셀 하나
0128 × 1281블록
1256 × 2562 × 2블록
2512 × 5124 × 4블록
31,024 × 1,0248 × 8블록
42,048 × 2,04816 × 16블록 — 정확히 청크 하나

크기 4 지도는 같은 16,384바이트를 사용하면서 크기 0 지도의 256배 면적을 덮는다. 지도 예술을 반드시 크기 0에서 지어야 하는 이유가 바로 이것이다. 다른 배율에서는 픽셀 하나가 여러 블록의 평균이 되어, 공들여 배치한 이미지가 다시 샘플링되며 사라진다.

크기 4 행은 다른 이유로도 기억할 가치가 있다. 픽셀 하나가 정확히 청크 하나이므로, 최대로 확대한 지도는 쓸 만한 청크 격자가 된다.

손상된 파일에 대해 이것이 뜻하는 것

지도 파일(월드 폴더의 data/minecraft/maps/<id>.dat)에 있는 colors 배열이 16,384바이트가 아니라면, 그것은 픽셀이 빠진 지도가 아니다. 게임은 지도를 여전히 불러오지만 픽셀을 버리고 빈 지도로 표시한다. 길이가 일부만 있는 형식은 없다. 배열은 언제나 전체 크기이며, 미탐험 지역은 생략되는 대신 색상 id 0으로 저장된다.

지도 이미지 추출기 →

더 많은 가이드

모두 보기 →