나는 청크가 있어야하는 voxel 기반 게임 엔진에서 작업하고 있습니다. 나는 미니 크래프트에서 Chunk 클래스를 읽으려고했지만, 이해할 수 없다. 청크 란 말은 : 16x16x256 블록 배열3D 세계에서 청크를 만드는 방법은 무엇입니까?
제 질문은 : 어떻게 청크가 작동하고 데이터를 어떻게 저장합니까? 청크
나는 청크가 있어야하는 voxel 기반 게임 엔진에서 작업하고 있습니다. 나는 미니 크래프트에서 Chunk 클래스를 읽으려고했지만, 이해할 수 없다. 청크 란 말은 : 16x16x256 블록 배열3D 세계에서 청크를 만드는 방법은 무엇입니까?
제 질문은 : 어떻게 청크가 작동하고 데이터를 어떻게 저장합니까? 청크
난 의미 : 블록
다음 약간의 기하학적 구조를 무시
음의 16x16x256 어레이. 이것이 Micraft-esque 게임 인 경우 블록이 채워지거나 무효입니다. 그 블록들이 다른 유형이거나, 단지 "거기"또는 "존재하지 않기"를 원하십니까?
단순화를 위해 블록에 대해 2^CHAR_BIT 개의 상태를 갖기를 원합니다 (대부분의 시스템에서 CHAR_BIT는 8입니다). 상태 0은 void를 의미합니다. 따라서 블록을 구조의 배열에 저장할 수 있습니다.
char chunk[16][16][256];
클래스로 캡슐화 할 수 있습니다. 당신의 세계를 하나 개 이상의 덩어리로 구성 물론
class Chunk
{
private:
char chunk[16][16][256];
}
, 당신은 아마 각 격자 셀은 하나 개의 덩어리를
class ChunkGrid
{
private:
std::list<Chunk> chunks;
을 차지 그리드,에 덩어리를 준비합니다 그리고 확실히 당신은 또한 원하는 빠르게 인덱스 덩어리는 세계에서 자신의 위치에 따라 할 수 있도록 공간 구획 구조에서 그 덩어리를 구성하는 옥트리는
class ChunkOctree
{
private:
union Fork
{
ChunkOctree *branch;
Chunk *leaf;
};
Fork forking[2][2][2];
}
는거야 루게릭 병에 대한 훌륭하게 작동 o 일부 기능이이 구조를 통과하기를 원하지만, 나는 학습 실험으로서 당신에게 연구를 맡길 것이다. 나는 당신에게 interwebs를 검색 할 수있는 많은 키워드를주었습니다.
}
위대한,하지만 심지어 자바? – TheMorfeus
이미 그 어딘가에 대한 C++ 자습서가 있습니다. 왜 내가 자바 태그 아래에 질문을했다. – TheMorfeus
@ TheMorfeus :이 의사 코드를 고려하십시오. 개념적으로 C++, Java 또는 D 사이에는 차이가 없습니다. 학습자로서 사용하는 언어를 넘어 귀하는 기본 개념과 데이터 구조를 이해하고 있다는 점이 중요합니다. – datenwolf
여기서 모두가 Minecraft 코드베이스를 읽은 것은 아니지만, 청크는 메모리 버퍼에서 기하학적 구조에 이르기까지 전혀 다를 수 있습니다. 당신이 말하는 덩어리는 무엇입니까? 너는 무엇을하려하고 있느냐. 지금까지 무엇을 시도 했습니까? 귀하의 휴리스틱 코드를 보여줄 수 있습니까? – datenwolf
나는 일하지 않는 코드가 없기 때문에 내가 어떻게해야하는지 이해하지 못한다. – TheMorfeus
@datenwolf 청크는 일반적으로 보셀 그래픽과 관련이 있습니다. 단지 미니 크래프트 특정이 아닙니다. –