원리) 하드 링크라 불리는 기능으로 서로 다른 두 월드의 파일을 링크 시켜서 구현한거. 이는 엔더상자와 비슷한 기능이라 생각하면 이해하기 편함. 이렇게 링크를 시키게 되면 하나의 데이터 파일을 다른 월드와 공유할 수 있음. 근데 여기서 문제가 있는데 바로 맵의 중요 데이터가 담겨있는 파일이 링크가 되지 않는 다는 거임. 이 파일은 level.dat이라 불리는 파일인데 여기에 여러 데이터가 담겨있음. 그래서 level.dat 파일 대신 링크가 가능한 스코어 보드 파일을 이용함. 플레이어 위치, 엔티티 등과 같은 여러 데이터들을 인게임에서 스코어 보드에 할당을 시켜두고 이 스코어 보드 파일을 다른 맵의 스코어 보드 파일과 링크시키는 방법으로 구현한거.
확실하진 않은데 마크의 허점?을 이용해서 맵 파일을 한 개만 만든 것 같아요. 마인크래프트가 맵을 불러올 때 만약 플레이어 위치를 불러온다고 하면 맵 A는 "A의 플레이어 데이터", 맵 B는 "B의 플레이어 데이터"를 불러오지만 이를 편집해서 맵 A가 "A의 플레이어 데이터"를 불러온다면 맵 B도 "A의 플레이어 데이터"를 불러오는 거죠. 제가 만든것도 아니고 그냥 글만 본 거라 틀릴수도 있지만 저는 이렇게 이해했습니다.
저도 좀 읽고 공부해봤는데요. 하드 링크라는 걸 이용한거더라구요. 하드 링크는 쉽게 말해서 바로가기 같은거죠. 하드링크는 바로가기지만 바로가기의 내용을 수정해도 원본의 내용이 수정되는? 바로가기라고 보시면 될 거 같습니다. 하지만 하드링크는 1.txt 파일과 2.txt 파일도 이을 수 있고 1.txt 2.bat 식으로 확장자 명이 달라도 링크가 되죠
추측건대 하드링크 또는 심볼릭 링크(symlink)를 이용한 맵 같습니다. 이게 뭐냐면, 실제 파일은 하나인데, 그 파일을 가리키는 링크가 두 개(원본 링크 1 + 심볼릭 링크 1)라는 뜻입니다. 더 자세한 내용은 답글로. 그러니까, A 맵을 완성한 다음, 그 맵을 복사를 해서, player dat파일과 entity dat 파일을 A 맵의 파일로 연결되게끔 작업한 것 같습니다. C 맵도 비슷한 것 같고.. 윈도우 메뉴에서 접근 가능한 바로 가기 기능과는 다릅니다. 윈도우의 바로 가기 기능은 lnk파일로 따로 만들어진 것이고, 하드링크는 그 파일과 직결로 연결되는 링크인 것입니다.
우리가 아는 일반적인 하드디스크(SSD포함)은 파일의 제목, 위치, 메타데이터 등을 하드디스크 맨 앞의 "인덱스" 영역에 저장해 두고, 파일의 실제 내용을 나머지 영역에 기록해 둡니다. 이렇게 하는 게 파일을 찾아가기가 효율적이라서 그렇죠. 그럼 똑같은 "내용"을 가리키는 메타데이터가 하나 더 생긴다면? 이것이 하드링크 또는 심볼릭 링크입니다. 즉, A 파일에 대한 히드링크 B를 만들어 두면 B 파일을 수정해도 A 파일이 함께 수정되는 것이죠. 이걸 마인크래프트 맵에 사용할 생각을 하다니 천재시가요.
혹시 프로그래밍의 포인터와 같은 개념일까요? 만약 포인터와 비슷하다면 사용자 입장에서 파일은 저장장치의 주소를 가리키는 포인터이고, 사용자가 만드는 바로 가기는 그 포인터를 가리키는 더블포인터이기 때문에 사용자가 바로 가기를 삭제하면 기존 원본 파일을 계속 사용할 수 있지만, 사용자가 원본 파일을 삭제하면 바로 가기는 더이상 기존 포인터를 역참조할 수 없게 되는 것으로 이해하면 될까요?