NBT란 도대체 무엇인가

NBTNamed Binary Tag(명명된 바이너리 태그)의 약자로, Minecraft가 직접 설계한 바이너리 데이터 형식입니다. 핵심 아이디어는 모든 데이터에 「이름 + 데이터 유형 + 값」이라는 세 가지를 함께 붙이고, 이를 중첩하여 트리 구조로 구성하는 것입니다. 자주 쓰이는 유형으로는 정수, 부동소수점, 문자열, 리스트, 그리고 안으로 계속 중첩할 수 있는 「복합 태그(Compound)」가 있습니다.

월드 속 많은 핵심 데이터가 NBT로 저장됩니다.

  • level.dat — 월드 메타데이터: 이름, 게임 모드, 시드, 스폰 지점, 게임 규칙, 버전 등이며, 그 자체가 하나의 NBT입니다(보통 gzip으로 압축되어 있습니다).
  • 엔티티와 블록 엔티티 — 몹, 상자 속 아이템, 표지판 글자 같은 데이터도 NBT 형식으로 기록됩니다.
  • 플레이어 데이터 — 인벤토리, 위치, 상태 등도 마찬가지로 NBT입니다.

level.dat에 무엇이 들어 있고 잃어버리면 어떻게 되는지 자세히 알고 싶다면 월드의 level.dat란 무엇인가를 참고하세요.

메모장으로 열면 왜 깨져 보이는가

NBT는 순수 텍스트가 아니라 바이너리이기 때문입니다. 유형 표시와 값을 직접 바이트로 압축해 넣고, level.dat는 흔히 gzip으로 압축까지 되어 있어 메모장이나 텍스트 편집기로 바로 열면 깨진 글자만 보입니다. 안의 내용을 제대로 보려면 전용 NBT 편집기가 필요하거나, 아예 게임 자체가 읽도록 하면 됩니다.

이는 흔한 오해 하나도 설명해 줍니다. 월드가 「열리지 않는」 것은 대개 NBT 내용이 손상되어서가 아니라 패키징 구조가 잘못되어서입니다. 예를 들어 level.dat가 압축 파일의 루트 디렉터리에 있지 않거나, 바깥에 폴더가 한 겹 더 씌워져 있는 경우입니다. 이런 구조 문제는 NBT 자체와는 무관합니다. 자바 에디션 쪽 월드 파일이 어떻게 구성되는지는 자바 에디션의 region/.mca 파일이란 무엇인가를 참고하세요.

TopoBlocks은 이 NBT를 어떻게 다루는가

.mcworld / .zip / 자바 에디션 월드를 열거나 진단할 때 TopoBlocks은 level.dat 등 NBT 구조를 읽어 파일 유형, 버전, 구조의 완전성, 누락된 파일 여부를 판단합니다. 이런 세이브 파일이 평소 어디에 있고 어떻게 생겼는지는 Minecraft 월드 세이브는 어디에 있는가를 참고하세요.

몇 가지 분명히 해 둘 점이 있습니다.

  • 기본적으로 무료이며 기기 내에서 처리됩니다. 진단을 위해 NBT를 읽는 것은 문제를 짚어내기 위함일 뿐 월드를 클라우드에 올릴 필요가 없습니다. 클라우드 백업 같은 기능을 쓸 때만 사용자의 명시적 동의가 필요합니다.
  • 원본 파일을 절대 덮어쓰지 않습니다. 수리할 때도 파일을 생성하며 원본 파일과 해시를 추적 가능하게 보존합니다. 사용자의 원본 NBT에 직접 덮어쓰지 않습니다.
  • 정직한 한계. 구조 수리가 해결하는 것은 파일 / 패키징 / 구조 문제입니다. NBT 데이터 자체가 심하게 손상되었다면 간단한 수리로는 살리지 못할 수 있고, 복잡한 손상은 고급 수리(¥9/회)로 처리됩니다. 결제 전에 문제, 성공 확률, 위험을 먼저 보여주고 실패 시 자동 환불하며 가격은 앱 내 표시를 기준으로 합니다.

간단히 말해 NBT는 Minecraft가 월드 데이터를 저장하는 「내부 언어」입니다. 이를 이해하면 왜 어떤 월드는 열리지 않는지, 그리고 수리할 때 실제로 어느 층을 건드리는지 알 수 있습니다.