생성 · 상주 · 변경 보존

떠났다가 돌아온 벽은 왜 살아날까?

블록을 지우고 청크를 떠나 보세요. 저장된 수정과 다시 생성한 지형을 구분합니다.
수정 기록 수
상주 청크 / dirty
사용 생성기 / 저장 버전

원인과 해결

문제와 원인

표시를 끄는 것과 메모리를 해제하는 것, 저장을 지우는 것은 다릅니다. 기본 지형만 다시 생성하면 없앤 블록도 돌아옵니다. 빈칸 0도 ‘수정이 존재함’으로 저장해야 합니다.

해결 · 기본 지형 B와 수정 D

각 셀은 D에 키가 있으면 그 값, 없으면 B(seed, version, worldPosition)를 읽습니다. 좌표 -1은 크기 8 청크에서 chunk=-1, local=7입니다. floor를 사용하므로 음수 경계도 맞습니다. 수정 후 dirty 상태를 표시하고 저장이 성공한 뒤 해제합니다.

버전과 비용

버전 2는 기본 높이 함수를 바꿉니다. 이전 생성기를 유지하면 저장 월드를 보존할 수 있고, 새 바탕에 덮으면 수정되지 않은 주변이 바뀝니다. 전체 청크 스냅샷은 바탕도 저장하므로 더 많은 데이터가 필요합니다.

이 실험의 범위

8×8 논리 셀과 화면 메시를 재구성하는 동기식 데모입니다. 화면 표시, 상주, dirty, 저장 버전은 분리합니다. 실제 파일 원자성·비동기 생성·충돌체·서버 저장은 구현하지 않습니다. 초기화는 이 실험의 저장 키만 지웁니다.

Minecraft 1.18.2 생성 설정 기록 · 좌표 기반 함수의 참조 구현