최근에 절차 세계를 만드는 방법에 대해 읽었지만 어떻게 저장합니까?
Terraria 또는 Minecraft와 같은 게임에서 사용자는 풍경을 자유롭게 수정할 수 있지만 시작 시드에서 해당 세계를 다시 만들 수는 없습니다. 절차 적이지만 수정 가능한 세계를 구하기 위해 어떤 기술이 사용됩니까?
최근에 절차 세계를 만드는 방법에 대해 읽었지만 어떻게 저장합니까?
Terraria 또는 Minecraft와 같은 게임에서 사용자는 풍경을 자유롭게 수정할 수 있지만 시작 시드에서 해당 세계를 다시 만들 수는 없습니다. 절차 적이지만 수정 가능한 세계를 구하기 위해 어떤 기술이 사용됩니까?
답변:
월드 생성에 사용한 시드와 수정 사항을 원자 "명령"또는 그 결과로 저장하십시오.
그런 다음 저장된 게임을로드 할 때 다음을 수행하십시오.
업데이트 : 물론 리소스가 사용 가능한 경우 (마인 크래프트에서 볼 수있는 경우) 생성 된 세계를 일반 세계와 마찬가지로 저장할 수 있습니다. 이 경우, 이미 방문한 (세계에서 절차 적 생성은 거의 의미가 없을 것입니다) 타일별로 저장해야합니다. 이것은 더 많은 HDD 및 / 또는 데이터베이스 리소스를 소비하지만 게임을로드 할 때 CPU 전력이 덜 필요합니다.
절차 적으로 생성 된 세계를 저장하는 것은 타일 맵 데이터를 저장하는 것과 같습니다.
세계가 다른 유형의 타일로 구성되어 있다고 가정하면 세계를 이진 형식으로 저장하려고 할 것입니다.
같은 방법으로 복셀 기반 맵도 저장할 수 있습니다.
정점 기반 맵 모델을 저장하는 것이 더 복잡합니다.
그 주제에 대해 자세히 설명해 주시겠습니까?
Minecraft에 대해 세계는 복셀을 사용하므로 저장하기가 훨씬 쉽습니다.
http://www.minecraftwiki.net/wiki/Region_file_format
http://www.minecraftwiki.net/wiki/Level_Format
이미 말했듯이, 세계를 생성하는 데 사용되는 시드를 저장하고 세계가 만든 것 (큐브, 원자 등)에 저장 형식을 적용하십시오.
월드에 메모리에 저장하기 위해 사용하는 데이터 구조는 디스크에서 쓰고 읽을 수있는 템플릿으로 사용될 수 있습니다. 디스크에서 사용할 수있는 데이터가없는 경우 게임의 절차 부분에서 이러한 데이터 구조를 처음 채 웁니다. 그런 다음 메모리에서 영역을 언로드 할 준비가되면 생성 또는 수정 된대로 디스크에 기록하십시오.
새 영역을 메모리에로드 할 준비가되면 먼저 생성되어 디스크에 저장되어 있는지 확인하십시오. 있는 경우 절차 생성 알고리즘 대신 디스크에서로드하십시오.
일반적으로 이것은 지형 덩어리로 수행됩니다. 각 청크를 자체 파일에 저장하거나 조회 테이블이있는 단일 파일의 데이터를 포함하는 더 복잡한 디스크 구조를 만들 수 있습니다. 데이터를 디스크에 저장하는 좋은 방법에 대한 다른 질문 이 있습니다 .