2차원 배열 형태의 미로를 생성하는 알고리즘이다. 오른쪽 혹은 위쪽으로 랜덤하게 길을 만들어 미로를 생성한다. 가지치기 형태로 사용되는 일반적인 이진 트리 알고리즘과 미로 생성시 사용되는 이진 트리 알고리즘은 조금 차이가 있다.가장자리에 벽을 만든다.짝수 번호에 해당하
조건을 만족하는 모든 경우를 탐색하는 알고리즘이다. 탐색 도중 조건에 부합하지 않는 경우가 생길 때 이전 분기로 돌아가 다른 가능성을 탐색한다.무작위 위치를 시작점으로 삼는다.길을 만들 수 있는 인접한 벽을 무작위로 선택해 길을 만든다.선택할 수 있는 벽이 없다면 이전
재귀적으로 공간을 둘로 분할해 트리 형태를 구성하는 알고리즘이다.임의의 방향(수직, 수평)과 임의의 위치를 선택해 공간을 둘로 분할한다.정해진 노드만큼 1번 과정을 반복한다.나누어진 공간에 맞춰 방을 생성한다.트리를 거슬러 올라가 방과 방을 연결한다.http:
격자 구조로 쪼개진 세포(단위)들이 주변에 있는 세포에 따라 자신의 상태를 변화시키는 알고리즘이다.특정한 비율(ex 50%)로 맵을 벽으로 채운다.맵의 각 타일을 선택하여 주변 8칸 중 벽이 4칸을 초과할 경우 벽으로, 4칸 미만일 경우 길로 바꾼다.2번 과정을 정해진
연속적인 일련의 의사 난수 값을 생성하는 알고리즘으로 유기적인 모양의 노이즈를 생성한다.왼쪽 노이즈는 랜덤으로 생성된 노이즈로, 유기적인 연결 없이 단절된 형태를 띠기 때문에 지형 생성 노이즈로 적합하지 않다.펄린 노이즈 파라미터시드 (seed)주파수 (frequenc
이전 포스팅에서 학습한 Perlin noise를 이용하여 Height 값에 따라 블록을 배치한 모습겉보기엔 괜찮은 지형이 생성되었으나 메모리 낭비가 너무 심하다.큐브를 생성한 다음 측정한 FPS아무것도 하지 않았지만 FPS가 약 20으로 현저히 낮은 수치를 기록하고있다
청크라는 단위 개념을 이용해 끝없이 로드되는 지형을 생성한다.하나의 거대한 덩어리라는 뜻으로 끝없는 세계를 구현할 때 맵 데이터를 관리하기 위해 사용된다. 대표적으로 마인크래프트에서 16(가로) \* 16(세로) \* 256(높이) 단위로 청크를 관리한다.절차적으로 만
이전 포스팅에서 생성한 지형에 텍스처를 적용한다.지형 텍스처는 6면체에서 위, 아래, 옆면 이렇게 총 3가지로 구성된다. 적용될 머티리얼은 다음 사진과 같다.그리고 이 머티리얼을 단순히 메쉬에 적용하면 될 것 같지만 아니다. 앞서 최적화를 위해 메쉬를 하나로 합쳐놓았기
목표 3D 노이즈를 사용하여 지형의 깊이와 동굴을 생성한다. 3D 노이즈 우리가 흔히 노이즈라 하면 2차원 평면상의 형태를 떠올리기 쉽지만 3차원 노이즈 또한 제작하는 것이 가능하다. ` float perlinValue = Mathf.PerlinNoise(xCoor
바다와 나무를 생성함으로써 절차적 지형 생성을 마무리한다.먼저 기존에는 공기와 흙, 이렇게 두가지 블록밖에 없었기에 별도의 블록 관리 시스템을 구현하지 않았었지만 지형을 생성함에 따라 필요한 블록들이 늘어나 우선적으로 블록 관리 시스템을 만들었다. 블록에는 아래 사진과